【问题标题】:PySpark: How to select * from the left table during rdd joinPySpark:如何在 rdd 连接期间从左表中选择 *
【发布时间】:2017-02-03 00:00:09
【问题描述】:

如何在pyspark join中选择*

impression_rdd.join(
        click_rdd, 
        impression_rdd.session_id == click_rdd.session_id, 
        "left_outer"
    ).select(impression_rdd.*) <------- pseudo code; how do you do this?

基本上就是 sql 等价物

SELECT impression.* FROM impression LEFT JOIN click on (impression.session_id = click.session_id)

【问题讨论】:

  • 这里有错误,或者你想问什么? RDD API 还是 SparkSQL API?
  • 我正在尝试在 python 中请求 RDD api。你好吗。*
  • 问题是我不想要select "*"。我想选择"impression_rdd.*"。我只希望* 应用于左表
  • 现在我明白了。不幸的是,不确定。

标签: python apache-spark pyspark


【解决方案1】:

您可以简单地在伪代码中添加别名和几个引号:

(impressions.alias("impressions")
    .join(clicks, ["id"], "left_outer")
    .select("impressions.*"))

【讨论】:

    【解决方案2】:

    zero323 的答案的另外两个等效结构:

    (impressions.join(clicks, 'session_id', 'left_outer')
        .select(*impressions.columns))
    

    如果你只有一列,比如“count”,放在右侧的表格中,这可能更具可读性。

    (impressions.join(clicks, 'session_id', 'left_outer')
        .drop('count'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-30
      • 2013-10-11
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 2018-12-24
      相关资源
      最近更新 更多