我需要使用pySpark遍历一个数据框就像我们可以使用for循环遍历一组值一样。以下是我编写的代码。这个代码的问题是:
- 我必须使用collect破坏了并行性
- 我无法在函数funcRowIter中打印任何DataFrame中的值
- 一旦找到匹配,我就不能打破循环。
from pyspark.sql.functions import *
from pyspark.sql import HiveContext
from pyspark.sql import functions
from pyspark.sql import DataFrameWriter
from pyspark.sql.readwriter import DataFrameWriter
from pyspark import SparkContext
sc = SparkContext()
hive_context = HiveContext(sc)
tab = hive_context.sql("select * from update_poc.test_table_a")
tab.registerTempTable("tab")
print type(tab)
df = tab.rdd
def funcRowIter(rows):
print type(rows)
if(rows.id == "1"):
return 1
df_1 = df.map(funcRowIter).collect()
print df_1