Pyspark 使用内部联接的大型表的Spark For循环
从两个现有表a和B创建一个新表,a有1年的历史数据,B有ID的数据。我需要使用Spark连接这两个表,在这两个表中,性能良好,并且每天或每月循环数据,因为business_day是分区。我不能考虑整个表格,因为每一个营业日都有3000万个。< /P> 表A-有n个列,如ID、营业日、名称 表B-有n个列-ID,ID\U代码 表A应该使用ID=ID连接表B,并与A的其他列一起获取ID_代码Pyspark 使用内部联接的大型表的Spark For循环,pyspark,Pyspark,从两个现有表a和B创建一个新表,a有1年的历史数据,B有ID的数据。我需要使用Spark连接这两个表,在这两个表中,性能良好,并且每天或每月循环数据,因为business_day是分区。我不能考虑整个表格,因为每一个营业日都有3000万个。< /P> 表A-有n个列,如ID、营业日、名称 表B-有n个列-ID,ID\U代码 表A应该使用ID=ID连接表B,并与A的其他列一起获取ID_代码 insert into output_table select ID, ID_CODE,Business_D
insert into output_table
select ID, ID_CODE,Business_Day, Name
from A,B where
A.ID=B.ID
我不知道如何为上面的循环编写,insert脚本可以工作,但一天需要2小时,我需要手动更改一年的工作日,这是不可能的,但是循环和其他性能步骤将帮助它运行得更快。使用Python的Spark SQL Query
从pyspark导入SparkConf,SparkContext
从pyspark.sql导入SQLContext
作为pd进口熊猫
sc=SparkContextconf=SparkConf
sqlContext=SQLContextsc
表A读取并创建数据帧->df_A
df_A=sqlContext.createDataFrame。。。
表B读取并创建数据帧->df_B
df_B=sqlContext.createDataFrame。。。
例子:
df1=sqlContext.createDataFrame
pd.DataFrame.from_记录
[
[1,12,“测试”],
[2,22,'RD']
],
列=['ID'、'ID_CODE'、'Departman']
df2=sqlContext.createDataFrame
pd.DataFrame.from_记录
[
[1、‘星期五’、‘山’],
[2、'friday'、'ramazan'],
[3、'friday'、'bozkir']
],
列=['ID','Business_Day','Name']
pyspark方法SQL
df=df_A.joindf_B,df_B.ID==df_A.ID
。选择“识别码”、“营业日”、“姓名”
sparksql方法
df1.RegisterEmptable'df_A'
df2.RegisterEmptable'df_B'
df=sqlContext.sql
选择标识码、营业日、名称
从…起
挑选*
从df_A左连接B.ID=A.ID上的df_B
df
显示
[In]:df.show
[Out]:
+----+------+----+
|ID|U代码|营业日|名称|
+----+------+----+
|12 |星期五|山|
|22 |周五|拉马赞|
+----+------+----+