【问题标题】:PySpark 1.6.1 DataFrame.write.parquet job not finishingPySpark 1.6.1 DataFrame.write.parquet 作业未完成
【发布时间】:2018-06-04 06:44:48
【问题描述】:

我有这个代码:

data_frame.write.parquet(
    '/tmp/test' , 'overwrite',
    partitionBy=None)

这是它的架构:

root
 |-- A: string (nullable = true)
 |-- timestamp: timestamp (nullable = true)
 |-- B: integer (nullable = true)
 |-- C: integer (nullable = true)
 |-- D: long (nullable = true)
 |-- E: string (nullable = true)
 |-- F: string (nullable = true)
 |-- G: string (nullable = true)
 |-- K: string (nullable = true)
 |-- L: string (nullable = true)
 |-- M: string (nullable = true)
 |-- N: long (nullable = true)

它卡在该行并且永远不会结束(它有大约一千行,两个小时后它没有完成),如果我取消作业,输出结束如下:

File "myfile.py", line <my line>, in my_method
    partitionBy=None)
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 471, in parquet
  File "/usr/local/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 811, in __call__
  File "/usr/local/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 626, in send_command
  File "/usr/local/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 740, in send_command
  File "/usr/lib64/python2.7/socket.py", line 430, in readline
    data = recv(1)
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/context.py", line 225, in signal_handler
KeyboardInterrupt

注意:此代码适用于该数据框中的一行

有什么想法吗?

谢谢!

更新--------

这适用于使用一个 json 创建的数据框,但会因多个 json 而失败

【问题讨论】:

    标签: python-2.7 dataframe pyspark parquet


    【解决方案1】:

    致任何可能遇到此问题的人:

    就我而言,问题在于代码执行了以下操作:

    • 使用传入数据创建 DF
    • 将该 DF 转换为 RDD
    • 在该 RDD 中进行一些转换
    • 再次转换为 DF

    对于 pyspark,处理 RDD 代价高昂,所以只要我更改了一段代码,而不是将 DF 转换为 RDD 并返回 DF 并创建一些基本的 DF 转换,问题就解决了。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多