PySpark 1.6.1 DataFrame.write.parquet 作业未完成
PySpark 1.6.1 DataFrame.write.parquet job not finishing
我有这个代码:
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 创建的数据框,但在多个
时失败
可能遇到此问题的人:
就我而言,问题在于代码执行了以下操作:
- 使用传入数据创建 DF
- 将该 DF 转换为 RDD
- 对该 RDD 进行一些转换
- 再次变身DF
对于 pyspark,处理 RDD 是一种昂贵的方式,所以只要我更改了一段代码,而不是将 DF 转换为 RDD,然后再转换回 DF,并创建了一些基本的 DF 转换,问题就解决了。
干杯
我有这个代码:
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 创建的数据框,但在多个
时失败可能遇到此问题的人:
就我而言,问题在于代码执行了以下操作:
- 使用传入数据创建 DF
- 将该 DF 转换为 RDD
- 对该 RDD 进行一些转换
- 再次变身DF
对于 pyspark,处理 RDD 是一种昂贵的方式,所以只要我更改了一段代码,而不是将 DF 转换为 RDD,然后再转换回 DF,并创建了一些基本的 DF 转换,问题就解决了。
干杯