Dur*_*aju 1 python sequencefile apache-spark pyspark
我能够运行此脚本以文本格式保存文件,但是当我尝试运行saveAsSequenceFile时,它出错了.如果有人知道如何将RDD保存为序列文件,请告诉我这个过程.我尝试在"学习Spark"以及官方Spark文档中寻找解决方案.
这成功运行
dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments")
dataRDD.saveAsTextFile("/user/cloudera/pyspark/departments")
Run Code Online (Sandbox Code Playgroud)
这失败了
dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments")
dataRDD.saveAsSequenceFile("/user/cloudera/pyspark/departmentsSeq")
Run Code Online (Sandbox Code Playgroud)
错误:调用z:org.apache.spark.api.python.PythonRDD.saveAsSequenceFile时发生错误.:org.apache.spark.SparkException:无法使用java.lang.String类型的RDD元素
这是数据:
2,Fitness
3,Footwear
4,Apparel
5,Golf
6,Outdoors
7,Fan Shop
8,TESTING
8000,TESTING
Run Code Online (Sandbox Code Playgroud)
序列文件用于存储键值对,因此您无法简单地存储RDD[String].根据你的数据,我猜你正在寻找这样的东西:
rdd = sc.parallelize([
"2,Fitness", "3,Footwear", "4,Apparel"
])
rdd.map(lambda x: tuple(x.split(",", 1))).saveAsSequenceFile("testSeq")
Run Code Online (Sandbox Code Playgroud)
如果你想保持整个字符串只需使用None键:
rdd.map(lambda x: (None, x)).saveAsSequenceFile("testSeqNone")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7653 次 |
| 最近记录: |