python - 如何将多个分区的 .gzip 文件读入 Spark Dataframe?

标签 python python-3.x dataframe pyspark apache-spark-sql

我有以下分区数据文件夹-

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 读取文件内容,它显示数据是制表符分隔的并且是简单易读的英文。

如何将这些文件正确读取到数据框中?

最佳答案

出于某种原因,Spark 无法识别 .gzip 文件扩展名。所以我不得不在读取分区数据之​​前更改文件扩展名-

import os

# go to my_folder
os.chdir("/path/to/my_folder")

# renaming all `.gzip` extensions to `.gz` within my_folder
cmd = 'rename "s/gzip/gz/" *.gzip'
result_code = os.system(cmd)

if result_code == 0:
    print("Successfully renamed the file extensions!")

    # finally reading the data into a dataframe
    my_df = spark.read.csv("/path/to/my_folder/*", sep="\t")
else:
    print("Could not rename the file extensions!")

关于python - 如何将多个分区的 .gzip 文件读入 Spark Dataframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58227509/

相关文章:

python - 使用嵌入式 shell 时,如何让 IPython autoreload 魔法自动加载?

python - 当鼠标悬停在窗口上时在 Tkinter 中显示按钮

python - SimpleBlobDetector Blob 计数

python - 无法导入姓名电子邮件消息

python - python用户名和密码恢复系统读取文件问题

Python简洁性: Comparing string to multiple sets with return value

python-3.x - 获取从 "/etc/group"开始排序的组 ID

list - 通过时间戳合并列表中的列表

python - 如何用另一个数据框替换部分数据框

python - 根据行值合并 Pandas 数据框