我正在从hdfs中读取管道分隔的文本文件。我想将此文件存储为数据框以进行进一步的pyspark数据框相关操作。我能够从hdfs中读取文件,现在我想知道如何将其转换为数据框。有可能吗?
#myVideo {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
如果第一种方法不可行,那么在第二种方法中,我想将此完整文件转换为csv格式,为此,我想替换管道“ |”每个位置都用逗号“,”符号表示,然后要将其存储为csv,然后再转换为数据框。请让我知道在pyspark-2.2.0中解决此问题的最佳方法。
答案 0 :(得分:0)
input=sc.textFile("hdfs://host/user/data/file1.txt") ## it is RDD
您可以使用它来将rdd转换为DataFrame。我们将“ sc”作为 SparkContext 。
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')
df = sqlContext.read \
.format('com.databricks.spark.csv') \
.options(header='true', delimiter=',') \ # you can use a ',' here
.load('hdfs://host/user/data/file1.csv')
有关更多信息,请参阅:
答案 1 :(得分:0)
df_with_schema = spark.read.format("csv")
.options(header='true', delimiter='|')
.schema(schema)
.load("文件名.csv")
而不是选项 try with options 它会起作用。同样适用于 sqlContext.read