gpt4 book ai didi

java - 如何从Python程序创建的文件中读取java程序中的RDD

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:56 25 4
gpt4 key购买 nike

我有一个 python Spark 程序,它从原始数据创建特征并使用 saveAsPickleFile 方法将它们存储到 Pickle 文件中。我还可以使用 saveAsTextFile 方法。

另一个程序是用 Java 编写的,使用 ML 实现分类器。

是否可以将序列化的pickle文件读入Java中的RDD中?

最佳答案

  • saveAsPickleFile 使用标准 pickle 模块。可以使用 pickle 读取序列化的对象,例如使用 Jython pickle 但它远非简单
  • saveAsTextFile 创建一个纯文本文件。没有理由不能在Java中加载它。问题是你仍然需要解析内容。 saveAsTextFile 的 PySpark 版本只是使用 unicode 方法,该方法不必返回任何有意义的表示。如果您想要可以轻松加载的东西,那么手动创建字符串表示是个好主意
  • 对于键值,最简单的方法是使用 saveAsSequenceFile/sequenceFile:

    rdd = sc.parallelize([(1L, "foo"), (2L, "bar")])
    rdd.saveAsSequenceFile("pairs")
    sc.sequenceFile[Long, String]("pairs").collect()
    // Array[(Long, String)] = Array((2,bar), (1,foo))
  • 如果您有更复杂的数据,您可以使用 Parquet 文件:

    from pyspark.mllib.linalg import DenseVector

    rdd = sc.parallelize([
    (1L, DenseVector([1, 2])), (2L, DenseVector([3, 4]))])
    rdd.toDF().write.parquet("pairs_parquet")
    sqlContext.read.parquet("pairs_parquet").rdd.collect()
    // Array[org.apache.spark.sql.Row] = Array([2,[3.0,4.0]], [1,[1.0,2.0]])
  • Avro甚至简单的 JSON 也可能是一个可行的解决方案。

关于java - 如何从Python程序创建的文件中读取java程序中的RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com