加载数据帧时从文件中删除CSV列
当通过DataRicks加载csv时,第2行下面的第4列未加载。 csv的列数每行不同 在test_01.csv中加载数据帧时从文件中删除CSV列,csv,apache-spark,pyspark,databricks,Csv,Apache Spark,Pyspark,Databricks,当通过DataRicks加载csv时,第2行下面的第4列未加载。 csv的列数每行不同 在test_01.csv中 a,b,c s,d,a,d f,s 通过下面的Datatricks加载上述csv文件 >>> df2 = sqlContext.read.format("com.databricks.spark.csv").load("sample_files/test_01.csv") >>> df2.show() +---+---+----+ | C0|
a,b,c
s,d,a,d
f,s
通过下面的Datatricks加载上述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转换为数据帧不会导致错误
可以通过如下指定架构来解决此问题。
df2=sqlContext.read.formatcom.databricks.spark.csv.schemaschema.loadsample\u files/test\u 01.csv
df2.show
尝试使用推断模式。仍然不起作用
df2=sqlContext.read.formatcom.databricks.spark.csv.optioninferSchema,true.loadsample\u files/test\u 01.csv
df2.show
但是,由于列数不同,有没有其他方法不使用schema?确保有固定的标题,即行可能缺少数据,但列名应该固定 如果未指定列名,则仍可以在读取csv时创建架构:
val schema = new StructType()
.add(StructField("keyname", StringType, true))
你能试试吗。optioninferSchema,true,即sqlContext.read.formatcom.databricks.spark.csv。optioninferSchema,true.loadsample\u files/test\u 01.csvalready试过了。。不工作。。
+---+---+----+----+----+
| e1| e2| e3| e4| e5|
+---+---+----+----+----+
| a| b| c|null|null|
| s| d| a| d|null|
| f| s|null|null|null|
+---+---+----+----+----+
+---+---+----+
| C0| C1| C2|
+---+---+----+
| a| b| c|
| s| d| a|
| f| s|null|
+---+---+----+
val schema = new StructType()
.add(StructField("keyname", StringType, true))