【发布时间】:2019-06-24 15:05:48
【问题描述】:
通过数据块加载 csv 时,未加载第 2 行下方的第 4 列。 csv 的列数因行而异。
在 test_01.csv 中,
a,b,c
s,d,a,d
f,s
通过如下数据块加载到 csv 文件上方
>>> df2 = sqlContext.read.format("com.databricks.spark.csv").load("sample_files/test_01.csv")
>>> df2.show()
+---+---+----+
| C0| C1| C2|
+---+---+----+
| a| b| c|
| s| d| a|
| f| s|null|
+---+---+----+
- 尝试使用文本文件加载
rdd = sc.textFile("sample_files/test_01.csv")
rdd.collect()
[u'a,b,c', u's,d,a,d', u'f,s']
但不将上述 rdd 转换为数据帧会导致错误
- 能够通过指定如下架构来解决。
df2 = sqlContext.read.format("com.databricks.spark.csv").schema(schema).load("sample_files/test_01.csv")
df2.show()
+---+---+----+----+----+
| e1| e2| e3| e4| e5|
+---+---+----+----+----+
| a| b| c|null|null|
| s| d| a| d|null|
| f| s|null|null|null|
+---+---+----+----+----+
- 已尝试使用 inferschema。还是不行
df2 = sqlContext.read.format("com.databricks.spark.csv").option("inferSchema", "true").load("sample_files/test_01.csv")
df2.show()
+---+---+----+
| C0| C1| C2|
+---+---+----+
| a| b| c|
| s| d| a|
| f| s|null|
+---+---+----+
但是由于列数不同,有没有其他不使用模式的方法?
【问题讨论】:
-
你可以试试
.option("inferSchema", "true")即sqlContext.read.format("com.databricks.spark.csv").option("inferSchema", "true").load("sample_files/test_01.csv") -
已经试过了..不行..
标签: csv apache-spark pyspark databricks