如何在pyspark中将管道分隔的文本文件转换为csv文件?

时间:2018-10-05 14:36:32

标签: python pyspark

我正在从hdfs中读取管道分隔的文本文件。我想将此文件存储为数据框以进行进一步的pyspark数据框相关操作。我能够从hdfs中读取文件,现在我想知道如何将其转换为数据框。有可能吗?

#myVideo {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

如果第一种方法不可行,那么在第二种方法中,我想将此完整文件转换为csv格式,为此,我想替换管道“ |”每个位置都用逗号“,”符号表示,然后要将其存储为csv,然后再转换为数据框。请让我知道在pyspark-2.2.0中解决此问题的最佳方法。

2 个答案:

答案 0 :(得分:0)

input=sc.textFile("hdfs://host/user/data/file1.txt") ## it is RDD 

您可以使用它来将rdd转换为DataFrame。我们将“ sc”作为 SparkContext

toDF()

input.toDF()

您必须为此推断架构,并必须使用'|'映射或拆分。您可以导入 HiveContext ,也可以使用定义为SQLContext的sqlContext。通过使用 sqlContext spark将为您指定的文件创建一个DataFrame。

# import
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)

# Then, you can use the com.databricks.spark.csv.
df = sqlContext.read \
     .format('com.databricks.spark.csv') \
     .options(header='true', delimiter='|') \
     .load('hdfs://host/user/data/file1.txt')

第二种方法(转换为.csv后),您可以

df = sqlContext.read \
     .format('com.databricks.spark.csv') \
     .options(header='true', delimiter=',') \ # you can use a ',' here
     .load('hdfs://host/user/data/file1.csv')
  • format():指定您要读取文件的格式。
  • options():允许您指定标题,也可以指定定界符。
  • load():加载给定路径的文件。

有关更多信息,请参阅:

答案 1 :(得分:0)

df_with_schema = spark.read.format("csv")
.options(header='true', delimiter='|')
.schema(schema)
.load("文件名.csv")

而不是选项 try with options 它会起作用。同样适用于 sqlContext.read