python - 将RDD保存为pyspark中的序列文件

标签 python apache-spark pyspark sequencefile

我能够运行此脚本以文本格式保存文件,但是当我尝试运行 saveAsSequenceFile 时出现错误。如果有人知道如何将 RDD 保存为序列文件,请告诉我这个过程。我尝试在“Learning Spark”以及 Spark 官方文档中寻找解决方案。

运行成功

dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments")
dataRDD.saveAsTextFile("/user/cloudera/pyspark/departments")

失败

dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments")
dataRDD.saveAsSequenceFile("/user/cloudera/pyspark/departmentsSeq")

Error: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.saveAsSequenceFile. : org.apache.spark.SparkException: RDD element of type java.lang.String cannot be used

数据如下:

2,Fitness
3,Footwear
4,Apparel
5,Golf
6,Outdoors
7,Fan Shop
8,TESTING
8000,TESTING

最佳答案

序列文件用于存储键值对,因此您不能简单地存储 RDD[String]。根据您的数据,我猜您正在寻找这样的东西:

rdd = sc.parallelize([
    "2,Fitness", "3,Footwear", "4,Apparel"
])
rdd.map(lambda x: tuple(x.split(",", 1))).saveAsSequenceFile("testSeq")

如果你想保留整个字符串,只需使用 None 键:

rdd.map(lambda x: (None, x)).saveAsSequenceFile("testSeqNone")

关于python - 将RDD保存为pyspark中的序列文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491579/

相关文章:

python - 在 Mac 上将 MDB 文件导入 Python (pandas)

python - 'kazoo.exceptions.ConnectionLoss' 可能出现多少次?

apache-spark - 空值和 countDistinct 与 Spark 数据帧

python - Databricks上的PySpark在绝对URI中获取相对路径:当尝试使用DateStamps读取Json文件时

apache-spark - 从Spark Dataframe获取表名称

apache-spark - 从事件流中查找事件的子序列

python - 在python中使用xlrd获取excel值列表

python - 匹配正则表达式,其中要匹配的字符串是从变量构建的

python - 如何在pyspark中从单行添加多行和多列?

apache-spark - 为什么spark在sql查询的末尾追加 'WHERE 1=0'