【发布时间】:2020-02-02 06:25:04
【问题描述】:
我有以下分区数据文件夹-
my_folder
|--part-0000.gzip
|--part-0001.gzip
|--part-0002.gzip
|--part-0003.gzip
我尝试使用 - 将这些数据读入数据框
>>> my_df = spark.read.csv("/path/to/my_folder/*")
>>> my_df.show(5)
+--------------------+
| _c0|
+--------------------+
|��[I���...|
|��RUu�[*Ք��g��T...|
|�t��� �qd��8~��...|
|�(���b4�:������I�...|
|���!y�)�PC��ќ\�...|
+--------------------+
only showing top 5 rows
也试过用这个来检查数据-
>>> rdd = sc.textFile("/path/to/my_folder/*")
>>> rdd.take(4)
['\x1f�\x08\x00\x00\x00\x00\x00\x00\x00�͎\\ǖ�7�~�\x04�\x16��\'��"b�\x04�AR_<G��"u��\x06��L�*�7�J�N�\'�qa��\x07\x1ey��\x0b\\�\x13\x0f\x0c\x03\x1e�Q��ڏ�\x15Y_Yde��Y$��Q�JY;s�\x1d����[��\x15k}[B\x01��ˀ�PT��\x12\x07-�\x17\x12�\x0c#\t���T۱\x01yf��\x14�S\x0bc)��\x1ex���axAO˓_\'��`+HM҈�\x12�\x17�@']
注意:当我使用zcat part-0000.gzip | head -1 读取文件内容时,它会显示数据是制表符分隔的,并且是简单易读的英文。
如何将这些文件正确读入数据框?
【问题讨论】:
-
您的 gzip 文件是 xml 格式吗?如果是这样,您应该使用 xml 包。
-
您好在记事本/文本编辑器中打开示例文件,您将了解文件的种类。如果其 XML 参见以下链接并检查 python API github.com/databricks/spark-xml
-
@Sri_Karthik 我打开了文件,看起来它是一个制表符分隔的文件,而不是 XML 格式..
-
如果它不是 xml 文件,那么它应该按照您的代码 my_df = spark.read.csv("/path/to/my_folder/", sep= '\t') 读取数据。我不明白为什么它以不同的格式显示。编码可能有问题。因此,请检查数据的编码。默认情况下它将是 utf-8。你能展示一张图片或任何随机的 5 行数据作为样本吗?
-
为什么不改用 .csv(..., compression='gzip') 呢?支持
标签: python python-3.x dataframe pyspark apache-spark-sql