使用内部联接的大表的 Spark For 循环

雄心勃勃的信号

从两个现有表 A 和 B 创建一个新表,A 有 1 年的历史数据,B 有 ID 的数据。我需要使用 Spark 连接这两个表,其中性能很好,并且每天或每月循环数据,因为 business_day 是分区。我不能考虑整个表,因为每个工作日都有 3000 万个。

表 A - 有 n 个列,例如 ID、Business_Day、Name

表 B - 有 n 列 - ID,ID_Code

表 A 应该使用连接表 BID=ID并获取 ID_Code 以及 A 的其他列

insert into output_table
select ID, ID_CODE,Business_Day, Name 
from A,B where 
A.ID=B.ID

我不确定如何为上述内容编写 For 循环,插入脚本有效,但一天需要 2 小时,而且我需要手动更改一年的工作日,这是不可能的,但是循环和其他性能步骤将有所帮助它运行得更快。

拉马赞博兹基尔

使用 Python 进行 Spark SQL 查询

来源

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
import pandas as pd

sc = SparkContext(conf=SparkConf())
sqlContext = SQLContext(sc)

# Table A read and spark create dataframe --> df_A
# df_A = sqlContext.createDataFrame(...)
# Table B read and spark create dataframe --> df_B
# df_B = sqlContext.createDataFrame(...)


# Example:

df1 = sqlContext.createDataFrame(
    pd.DataFrame.from_records(
        [
            [1,12,'Test'],
            [2,22,'RD']
        ],
        columns=['ID','ID_CODE','Departman']
    ))

df2 = sqlContext.createDataFrame(
    pd.DataFrame.from_records(
        [
            [1,'friday','Shan'],
            [2,'friday','ramazan'],
            [3,'friday','bozkir']
        ],
    columns=['ID','Business_Day','Name']))

### pyspark method SQL 
df = df_A.join(df_B,df_B.ID == df_A.ID)
.select('ID_CODE','Business_Day','Name')

### Spark SQL method
df1.registerTempTable('df_A')
df2.registerTempTable('df_B')

df = sqlContext.sql("""
            SELECT ID_CODE,Business_Day,Name
            FROM (
                SELECT *
                FROM df_A A LEFT JOIN df_B B ON B.ID = A.ID
            ) df    
            """)

""").show()

[In]: df.show()
[Out]: 
+-------+------------+-------+
|ID_CODE|Business_Day|   Name|
+-------+------------+-------+
|     12|      friday|   Shan|
|     22|      friday|ramazan|
+-------+------------+-------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Scala消除Spark中的循环

来自分类Dev

如何避免Spark的for循环?

来自分类Dev

如何避免Spark的for循环?

来自分类Dev

For循环Spark数据框

来自分类Dev

使用Scala使用Spark for循环到map方法

来自分类Dev

如何在for循环内使用Spark随后在数据集中添加列(其中for循环包含列名)

来自分类Dev

在 plsql for 循环中使用内部联接选择查询失败

来自分类Dev

循环递归自联接表

来自分类Dev

WebMatrix-内部联接和Foreach循环

来自分类Dev

PDO多个内部联接似乎正在循环

来自分类Dev

大查询中的内部联接大表

来自分类Dev

如何用Direct Spark Cassandra表数据操作替换JAVA循环

来自分类Dev

Spark数据集-内部联接问题

来自分类Dev

Spark Dataframe内部联接,无重复匹配

来自分类Dev

使用带有大表的循环的python性能问题

来自分类Dev

Rails在每个循环中显示联接的表

来自分类Dev

如何使用循环循环

来自分类Dev

在foreach循环内产生Spark NullPointerException

来自分类Dev

(Py)Spark中的缓存和循环

来自分类Dev

如何循环遍历 Spark 数据帧

来自分类Dev

用于循环的 Spark Scala 数据帧

来自分类Dev

在表中使用“ for”循环

来自分类Dev

使用循环创建表

来自分类Dev

Oledb和访问。应该使用内部联接还是C#循环?

来自分类Dev

从内部循环 php 中断循环

来自分类Dev

在每个循环的内部使用DisplayFor

来自分类Dev

替代使用sed内部循环

来自分类Dev

使用内部联接MYSQL联接多个表

来自分类Dev

使用for循环?