parquet、avro和其他hadoop文件格式的第一行可以有不同的布局吗?

h5qlskok  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(447)

为什么我必须将rdd转换为df才能将其写成Parquet、avro或其他类型?我知道写rdd是因为不支持这些格式。我实际上是想写一个Parquet文件,第一行只包含头日期,其他行包含细节记录。示例文件布局

2019-04-06
101,peter,20000
102,robin,25000

我想用上面的内容创建一个Parquet地板。我已经有一个csv文件sample.csv与上述内容。当读取为Dataframe时,csv文件只包含第一个字段,因为第一行只有一列。

rdd = sc.textFile('hdfs://somepath/sample.csv')
df = rdd.toDF()
df.show()

订单号:

2019-04-06
101
102

有人能帮我把rdd的全部内容转换成Dataframe吗。即使我尝试直接读取文件作为df而不是从rdd转换,同样的事情也会发生。

czfnxgou

czfnxgou1#

您的文件在spark的reader中只有“一列”,因此Dataframe输出将仅为该列。
您不一定做了什么错误,但是如果您希望有多个列,那么您的输入文件的格式是错误的,如果是这样,您应该使用 spark.csv() 而不是 sc.textFile() 为什么我必须将rdd转换为df才能将其写成Parquet、avro或其他类型?
因为这些类型需要一个模式,而rdd没有。
尝试编写一个Parquet文件,第一行只包含头日期,其他行包含细节记录
csv文件头需要描述所有列。所有行上方不能有孤岛标头。
parqeut/avro/orc/json不能没有csv这样的列标题,但同样适用。

相关问题