目前,我可以通过RDD API使用以下代码将文本文件解析为Spark DataFrame:
def row_parse_function(raw_string_input):
# Do parse logic...
return pyspark.sql.Row(...)
raw_rdd = spark_context.textFile(full_source_path)
# Convert RDD of strings to RDD of pyspark.sql.Row
row_rdd = raw_rdd.map(row_parse_function).filter(bool)
# Convert RDD of pyspark.sql.Row to Spark DataFrame.
data_frame = spark_sql_context.createDataFrame(row_rdd, schema)
这种方法目前是理想的吗?
或者,如果不使用旧的RDD API,还有更好的方法吗?
仅供参考,Spark 2.0。
答案 0 :(得分:0)
粘土,
这是一种很好的方法来加载没有特定格式的文件,而不是CSV,JSON,ORC,Parquet或来自数据库。
如果你有任何特定的逻辑来处理它,这是最好的方法。当您需要在数据中运行非常微不足道的特定逻辑时,使用RDD就是出于这种情况。
您可以阅读here有关Spark的API的用法。而你处于RDD的情况是最好的方法。