csv 文件读取火花 1.6



我的csv文件看起来

123456
Name  age branch
Mahesh 21 ece
Pawan    22 cse
Count-21

它有标题(123456(和拖车(计数-21(

我尝试使用 Spark 1.6 创建 Spark 上下文并阅读它

Val df = spark.read.option("com.databrics.csv").option("header",false). option("inferSchema",false).load(path)
df.show()

而且我能够读取数据,但它只读取第一列

123456
Name  
Mahesh 
Pawan   
Count-21

剩下的是不阅读,我可以添加任何额外的选项。

运行 df.show(( 时的预期输出

123456
Name  age branch
Mahesh 21 ece
Pawan    22 cse
Count-21

输出得到:

123456
Name  
Mahesh 
Pawan   
Count-21

您的输入文件不是一个好的 CSV 文件。 它不是逗号分隔的,这是数据砖的默认值。 如果文件是制表符分隔的,则可以使用.option("delimiter", "t")指定。 字段数也不应在行之间变化。 Spark 无法从第一行分辨出文件中有多少字段。 如果可以使用正确数量的字段固定第一行,并且字段之间的分隔符一致,则应该能够读取它。

试试这个:

Val df = spark.read().format("csv").schema(<define_schema_with_your_struct_fields>).option("header",false).load(path)

您可能希望定义如下架构:

List<StructField> fldList = new ArrayList<StructField>();
fldList.add(DataTypes.createStructField("Name", DataTypes.StringType, true));
fldList.add(DataTypes.createStructField("Age", DataTypes.StringType, true));
fldList.add(DataTypes.createStructField("Branch", DataTypes.StringType, true));

最新更新