Questions tagged «bigdata»

8
按ID删除数百万行的最佳方法
我需要从PG数据库中删除大约200万行。我有一个需要删除的ID列表。但是,我尝试执行此操作的任何方法都需要花费几天的时间。 我尝试将它们放在一个表中并按100个批次进行处理。4天后,它仍在运行,仅删除了297268行。(我必须从ID表中选择100个ID,删除该列表中的位置,从ID表中删除我选择的100个ID)。 我试过了: DELETE FROM tbl WHERE id IN (select * from ids) 这也是永远的。难以估计需要多长时间,因为直到完成我才能看到它的进度,但是查询在2天后仍在运行。 当我知道要删除的特定ID且有数百万个ID时,这只是一种寻找从表中删除的最有效方法。

1
从Pyspark df到PostgresSQL写入超过5000万,这是最有效的方法
从Spark数据帧向Postgres Tables插入数百万条记录(例如5000万条)的最有效方法是。过去,我通过使用批量复制和批处理大小选项(从成功的火花到MSSQL)做到了这一点 。 Postgres是否有类似的东西? 添加我尝试过的代码以及运行该过程所花费的时间: def inserter(): start = timer() sql_res.write.format("jdbc").option("numPartitions","5").option("batchsize","200000")\ .option("url", "jdbc:postgresql://xyz.com:5435/abc_db") \ .option("dbtable", "public.full_load").option("user", "root").option("password", "password").save() end = timer() print(timedelta(seconds=end-start)) inserter() 因此,我对1000万条记录执行了上述方法,并按中指定的进行了5个并行连接,numPartitions并尝试了200k的批量大小。 该过程花费的总时间为0:14:05.760926(十四分五秒)。 还有其他有效的方法可以减少时间吗? 我可以使用的有效或最佳批次大小是多少?增加我的批量大小会更快地完成工作吗?还是打开多个连接,即> 5可以帮助我更快地完成此过程? 在一个平均14分钟10万条记录是不坏,但找的人在那里谁也以前做过这有助于回答这个问题。

4
使用R来解决Lucky 26游戏
我正试图向我的儿子展示如何使用编码来解决游戏带来的问题,以及如何让R处理大数据。有问题的游戏称为“幸运26”。在此游戏中,数字(1-12,无重复)位于大卫之星的12个点(6个顶点,6个交点)上,并且6行4个数字必须全部加为26。在大约4.79亿可能性中(12P12 )显然有144个解决方案。我试图按照以下方式在R中对此进行编码,但内存似乎是一个问题。如果成员有时间,我将不胜感激任何建议以提高答案。预先感谢成员。 library(gtools) x=c() elements <- 12 for (i in 1:elements) { x[i]<-i } soln=c() y<-permutations(n=elements,r=elements,v=x) j<-nrow(y) for (i in 1:j) { L1 <- y[i,1] + y[i,3] + y[i,6] + y[i,8] L2 <- y[i,1] + y[i,4] + y[i,7] + y[i,11] L3 <- y[i,8] + y[i,9] + y[i,10] + y[i,11] L4 …
15 r  bigdata  permutation 

1
Apache Spark:重新分区,排序和缓存对联接的影响
我正在探索将表联接到自身时Spark的行为。我正在使用Databricks。 我的虚拟场景是: 读取外部表作为数据框A(底层文件为增量格式) 将数据框B定义为仅选择某些列的数据框A 在column1和column2上连接数据框A和B (是的,这没有多大意义,我只是在尝试了解Spark的基本机制) a = spark.read.table("table") \ .select("column1", "column2", "column3", "column4") \ .withColumn("columnA", lower((concat(col("column4"), lit("_"), col("column5"))))) b = a.select("column1", "column2", "columnA") c= a.join(b, how="left", on = ["column1", "column2"]) 我的第一次尝试是按原样运行代码(尝试1)。然后,我尝试重新分区和缓存(尝试2) a = spark.read.table("table") \ .select("column1", "column2", "column3", "column4") \ .withColumn("columnA", lower((concat(col("column4"), lit("_"), col("column5"))))) .repartition(col("column1"), col("column2")).cache() 最后,我重新分区,排序和缓存 a = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.