【问题标题】:writing DataFrame to TextFile in Pyspark在 Pyspark 中将 DataFrame 写入 TextFile
【发布时间】:2020-05-20 23:12:34
【问题描述】:

我正在尝试使用以下代码将数据框“df2”保存到文本文件中

代码: df2.write.format('text').mode('overwrite').save('/tmp/hive/save_text')

错误:

org.apache.spark.sql.AnalysisException:文本数据源不支持int数据类型;

Py4JJavaError Traceback(最近一次调用最后一次) /databricks/spark/python/pyspark/sql/utils.py in deco(*a, **kw) 62 尝试: ---> 63 返回 f(*a, **kw) 64 除了 py4j.protocol.Py4JJavaError as e:

/databricks/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name) 327 “调用 {0}{1}{2} 时出错。\n”。 --> 328 格式(target_id, ".", name), value) 329 其他:

Py4JJavaError:调用 o1239.save 时出错。 : org.apache.spark.sql.AnalysisException: 文本数据源不支持int数据类型;

**问:请建议如何将数据框中的数据写入文本文件**

【问题讨论】:

    标签: dataframe text pyspark


    【解决方案1】:

    请注意,为了使用 write.format('text'),您的数据框必须只有一列,否则会引发错误。因此,您需要将所有列转换为单列。

    或者,您可以使用 write.format('csv') 或者将其转换为 RDD 并保存为文本文件。

    例如,您的数据框包含两列,即。 id, name (id 是 int 并且 name 是 string) 并且你想在输出文件中写为 id,name。为此,编写如下代码:

    df2.rdd.map(lambda x : str(x[0]) + "," + x[1]).saveAsTextFile('/tmp/hive/save_text')
    

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      相关资源
      最近更新 更多