【发布时间】:2019-04-17 04:55:15
【问题描述】:
我在三个不同的文件夹中有三个不同的 orc 文件,我想一口气将它们全部读入一个数据帧。
user1.orc 在 /data/user1/
+-------------------+--------------------+
| userid | name |
+-------------------+--------------------+
| 1 | aa |
| 6 | vv |
+-------------------+--------------------+
user2.orc 位于 /data/user2/
+-------------------+--------------------+
| userid | info |
+-------------------+--------------------+
| 11 | i1 |
| 66 | i6 |
+-------------------+--------------------+
user3.orc 位于 /data/user3/
+-------------------+--------------------+
| userid | con |
+-------------------+--------------------+
| 12 | 888 |
| 17 | 123 |
+-------------------+--------------------+
我想一次阅读所有这些并拥有如下所示的数据框
+-------------------+--------------------+--------------------+----------+
| userid | name | info | con |
+-------------------+--------------------+--------------------+----------+
| 1 | aa | null | null |
| 6 | vv | null | null |
| 11 | null | i1 | null |
| 66 | null | i6 | null |
| 12 | null | null | 888 |
| 17 | null | null | 123 |
所以我是这样用的
val df =spark.read.option("mergeSchema","true").orc("file:///home/hadoop/data/")
但它在所有文件中提供了公共列
+-------------------+
| userid |
+-------------------+
| 1 |
| 6 |
| 11 |
| 66 |
| 12 |
| 17 |
那么如何一口气读完这三个文件呢?
【问题讨论】:
标签: apache-spark apache-spark-sql orc