CSV文件读取Spark 1.6

时间:2019-09-09 12:12:55

标签: apache-spark

我的csv文件看起来

123456

Name  age branch

Mahesh 21 ece

Pawan    22 cse

Count-21

它具有标题(123456)和尾部(count-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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

尝试一下:

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));