小编Mik*_*ike的帖子

在 Redshift 中更新整个表的正确方法,删除表 + 创建表与截断 + 插入表

目前,我有很多表,我必须更新它们所保存的信息,有时每天或每周更新一次。到目前为止,我一直通过以下组合来做到这一点DROP TABLE IF EXIST some_schema.some_table_name;CREATE TABLE some_schema.some_table_name AS ( SELECT ... FROM ... WHERE ...);我想知道什么是“最佳实践”或正确的方法。

我读到INSERTRedshift 中的操作非常昂贵,所以我一直在避免使用它,但也许使用TRUNCATEwithINSERT比删除和创建更好。

我如何确认哪个选项更好?

我已经从 Redshift 文档中看到了这篇文章,但我不确定这是否是最佳选择,因为我不仅可以删除记录,还可以保留和插入记录。

sql amazon-redshift

2
推荐指数
1
解决办法
1828
查看次数

如何:Pyspark 数据帧持久使用和回读

我对 pyspark 很陌生,我遇到了以下错误:

Py4JJavaError: An error occurred while calling o517.showString.我读过这是由于内存不足:
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded

所以,我一直在读到这种情况的转变是使用df.persist()和然后再次阅读持久化的df,所以我想知道:

  • 给定一个for我在其中执行一些.join操作的循环,我应该.persist()在循环内部还是在循环结束时使用?例如
    for col in columns:
       df_AA = df_AA.join(df_B, df_AA[col] == 'some_value', 'outer').persist()
    
    --> or <--
    
    for col in columns:
       df_AA = df_AA.join(df_B, df_AA[col] == 'some_value', 'outer')
    df_AA.persist()
    
    Run Code Online (Sandbox Code Playgroud)
  • 一旦我这样做了,我应该如何回读? df_AA.unpersist()? sqlContext.read.some_thing(df_AA)?

我对此很陌生,所以请尽量解释清楚。

我在本地机器(8GB 内存)上运行,使用 jupyter-notebooks(anaconda);Windows 7的; 爪哇 8; 蟒蛇 3.7.1; pyspark v2.4.3

python caching persist dataframe pyspark

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

amazon-redshift ×1

caching ×1

dataframe ×1

persist ×1

pyspark ×1

python ×1

sql ×1