簡體   English   中英

Python Spark卡在rdd.collect上

[英]Python spark get stuck on rdd.collect

我是Spark世界的新手。 我正在使用pyspark在本地計算機上測試Spark。 我創建了以下腳本,但是當它到達rdd.collect()方法時,它只會卡住。

sparkSession = SparkSession.builder.appName("SimpleApp")\
            .getOrCreate()

_data_frame_reader_ = sparkSession.read.format("jdbc").option("url", url) \
  .option("user", user) \
  .option("password", password) \
  .option("driver", "oracle.jdbc.driver.OracleDriver")

mytable = _data_frame_reader_.option("dbtable", 'my_test_table')
mytable .registerTempTable("my_test_table")

sql = 'SELECT * from my_test_table'

df = sparkSession.sql(sql)

for row in df.rdd.collect():
    # do some operation

我的表只有大約50條記錄。 我可以通過SQLDeveloper連接到我的數據庫。

現在,我正在嘗試通過Jupyter Notebook執行此代碼。 它不會記錄任何錯誤,只需永遠執行即可。

我不知道發生了什么事。

感謝您的時間!

我知道發生了什么事。 我的表只有50條記錄,但與其他表有很多行的FK。 我讓該作業運行了30分鍾以上,但沒有完成。 我做了以下事情:

1-在數據庫配置中增加了獲取大小:

_data_frame_reader_ = sparkSession.read.format("jdbc").option("url", url) \
  .option("user", user) \
  .option("password", password) \
  .option("fetchsize", "10000") \
  .option("driver", "oracle.jdbc.driver.OracleDriver")

這將提高負載性能。 請參閱本文檔

2-我已經對查詢進行了調整,以僅獲取所需的記錄,包括一些聯接以及在其他表中創建wheres來過濾依賴行。

現在我的工作在不到2分鍾的時間內完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM