调整从 txt 到 parquet 的列

Adjusting columns from txt to parquet

这是我第一次尝试将 txt 文件转换为 parquet 格式,请耐心等待。

我有一个 txt 文件,原来是这样的:

id|roads|weights
a01|1026|1172|1
a02|DT:SR:0|2|NE|DT:SR:1|2|NE|1
b01|DT:SR:1|7|SW|1

我想把它变成这样的镶木地板格式:

+---+-------------------------+-------+
|id |roads                    |weights|
+---+-------------------------+-------+
|a01|1026|1172                |1      |
|a02|DT:SR:0|2|NE|DT:SR:1|2|NE|1      |
|b01|DT:SR:1|7|SW             |1      |

到目前为止,我已经将我的 txt 文件上传到 HDFS,并尝试使用 spark 将其转换为 parquet 格式:

val textfile = spark.read.text("hdfs:some/path/file.txt")
textfile.write.parquet("some.parquet")
val parquetfile = spark.read.parquet("hdfs:some/path/some.parquet")

但我的列名现在被视为一行,所有内容都放在一起作为称为“值”的单个列。

如有任何帮助,我们将不胜感激!

read.text 加载文本文件和 returns 一个名为“value”的列。您可以使用 read.csv 读取分隔文件。下面的代码应该为你工作。

val textFile=spark.read.option("delimiter","|").option("header",true).csv("hdfs:some/path/file.txt")
textFile.write.parquet(parquet_file_path)