Apache spark Pyspark中的增量数据加载和查询,无需重新启动Spark作业
大家好,我想做增量数据查询Apache spark Pyspark中的增量数据加载和查询,无需重新启动Spark作业,apache-spark,pyspark,spark-dataframe,pyspark-sql,Apache Spark,Pyspark,Spark Dataframe,Pyspark Sql,大家好,我想做增量数据查询 df = spark .read.csv('csvFile', header=True) #1000 Rows df.persist() #Assume it takes 5 min df.registerTempTable('data_table') #or createOrReplaceTempView result = spark.sql('select * from data_table where column1 > 10') #10
df = spark .read.csv('csvFile', header=True) #1000 Rows
df.persist() #Assume it takes 5 min
df.registerTempTable('data_table') #or createOrReplaceTempView
result = spark.sql('select * from data_table where column1 > 10') #100 rows
df_incremental = spark.read.csv('incremental.csv') #200 Rows
df_combined = df.unionAll(df_incremental)
df_combined.persist() #It will take morethan 5 mins, I want to avoid this, because other queries might be running at this time
df_combined.registerTempTable("data_table")
result = spark.sql('select * from data_table where column1 > 10') # 105 Rows.
将csv/mysql表数据读入spark数据框
仅在内存中保留该数据帧原因:我需要性能&我的数据集可以适合内存
注册为临时表并运行spark sql查询。在这之前,我的星火工作已经开始了
第二天,我将收到一个临时mysql表或csv文件中的增量数据集。现在,我想对一个集合I:e persistend_prevData+recent_read_IncrementalData运行相同的查询。我称之为混合数据集。
***不确定当增量数据进入系统时,它一天可能会出现30次
在此之前,我也不希望spark应用程序停止运行,。它应该一直向上。我需要查询mixedDataset的性能,并使用相同的时间度量,就像它是持久化的一样
我关注的是:
在P4中,是否需要取消持久化上一个数据并再次持久化上一个和递增数据的联合数据帧?
我最关心的是,我不想重新启动Spark作业来加载/启动更新后的数据。当然,只有在服务器宕机的情况下,我才需要重新启动。
因此,在较高的层次上,我需要动态地查询更快的性能数据集+增量数据集(如果有的话)
目前,我正在为所有数据创建一个文件夹,并将增量文件也放在同一个目录中。每隔2-3小时,我会重新启动服务器,我的sparkApp会从读取该系统中的所有csv文件开始。然后在它们上运行查询
尝试探索hive persistentTable和Spark Streaming,如果发现任何结果,将在此处更新
请为我提供实现此目标的方法/架构
如果问题有任何不明确之处,请发表评论,不要否决:
谢谢。请尝试流式传输,因为会话已经在运行,并且每次您在文件夹中放置内容时都会触发流式传输: df_增量=火花\ .readStream\ .选项SEP\ .schemainput_schema\ .csvinput_路径 df_增量列1>10\ .writeStream\ .queryNamedata\u表\ .格式化内存\ 开始 spark.sqlSELECT*自data_table.show