【问题标题】:Which types can you pass between Scala and Pyspark inside Zeppelin?Zeppelin 中的 Scala 和 Pyspark 之间可以传递哪些类型?
【发布时间】:2017-09-05 04:18:52
【问题描述】:

我使用 Zeppelin 0.7.1,有时我想传递非分布式数据类型,如 Seq 或 Array。目前我总是将它们转换为数据集并在 Python 中作为数据框获取它们。有没有更好的办法?

【问题讨论】:

    标签: pyspark apache-zeppelin


    【解决方案1】:

    对于简单类型使用z ZeppelinContext 非常方便。

    在 Spark 中

    z.put("name", "zeppelin")
    z.put("array", Array(1, 2, 3))
    

    在 PySpark 中

    %pyspark
    z.get("name")
    ar = z.get("array")
    print(ar[0])
    
    z.put("pyspark", "cool")
    z.put("pyarray", [1, 2, 3])
    

    再次在 Spark 中

    z.get("pyspark")
    val ar = z.get("pyarray").asInstanceOf[java.util.ArrayList[Int]]
    

    对于复杂类型,可以在一侧为字符串添加序列化,在另一侧进行反序列化。

    【讨论】:

    • 但是我问一些事情,比如让我们说案例类(或元组)的数组。我有已经存储在 master 上的数据,我想在 Python 中绘制它们,我不想不必要地把它们打乱。
    • 现在我们离我的问题的答案越来越近了 :) 正如我已经说过的,我在 Scala 中有数组,我想将它传递给 Python,所以我想做与你相反的事情示例,我不知道有什么优雅的方法。
    • 不确定你的意思。该示例已经包含从 Scala 到 Python 以及从 Python 回到 Scala 的传递数组。
    • 对不起,你是对的:)谢谢你的回答:)
    猜你喜欢
    • 2020-01-30
    • 2016-07-13
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2017-05-16
    • 2017-04-06
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多