Apache spark 将多行文本文件作为一个元素读取

Apache spark 将多行文本文件作为一个元素读取,apache-spark,pyspark,text-files,Apache Spark,Pyspark,Text Files,我的目标是在spark中进行一些文本挖掘。我正在使用SPark 2.1。因此,我需要读取文本文件并将其保存为RDD/DataFrame的元素。我的问题是,在spark中,每一行都被解释为一个元素,但我希望每个文本文件都有一个RDD元素。我编写的代码如下: from pyspark.sql import SparkSession from pyspark.ml.feature import StringIndexer from pyspark.ml import Pipeline spark =

我的目标是在spark中进行一些文本挖掘。我正在使用SPark 2.1。因此,我需要读取文本文件并将其保存为RDD/DataFrame的元素。我的问题是,在spark中,每一行都被解释为一个元素,但我希望每个文本文件都有一个RDD元素。我编写的代码如下:

from pyspark.sql import SparkSession
from pyspark.ml.feature import StringIndexer
from pyspark.ml import Pipeline
spark = SparkSession\
       .builder\
       .getOrCreate()

for i in range(510):
if i < 9:
    b = "00" + str(i+1) + ".txt"
elif i < 99: 
    b = "0" + str(i+1) + ".txt"
else:
    b = str(i+1)+".txt"  
if i == 0:
    a = spark.read.text("hdfs:///user/vkocamer/bbc/business/"+b )
    c = a
else:
    d = c
    a = spark.read.text("hdfs:///user/vkocamer/bbc/business/"+b )
    c = a.union(d)
从pyspark.sql导入SparkSession
从pyspark.ml.feature导入StringIndexer
从pyspark.ml导入管道
火花=火花会话\
建筑商先生\
.getOrCreate()
对于范围(510)内的i:
如果i<9:
b=“00”+str(i+1)+“.txt”
如果i<99:
b=“0”+str(i+1)+“.txt”
其他:
b=str(i+1)+“.txt”
如果i==0:
a=spark.read.text(“hdfs:///user/vkocamer/bbc/business/“+b)
c=a
其他:
d=c
a=spark.read.text(“hdfs:///user/vkocamer/bbc/business/“+b)
c=a.接头(d)
我之前已经用python和pandas完成了这项工作,而且效果很好:

input = []
for i in range(510):
  if i < 9:
     b = "00" + str(i+1) + ".txt"
  elif i < 99: 
     b = "0" + str(i+1) + ".txt"
  else:
    b = str(i+1)+".txt"  
  a =open("C:\\Users\\VKocamer\\Desktop\\bbc\\business\\"+b).read().rstrip("\n")
  input.append(a)  
input=[]
对于范围(510)内的i:
如果i<9:
b=“00”+str(i+1)+“.txt”
如果i<99:
b=“0”+str(i+1)+“.txt”
其他:
b=str(i+1)+“.txt”
a=打开(“C:\\Users\\VKocamer\\Desktop\\bbc\\business\\”+b).read().rstrip(“\n”)
input.append(a)
我想我需要像这样的东西

rstrip(“\n”)


有什么建议吗

您可以使用以下工具读取整个文件:

val fileInput = sc.wholeTextFiles("path to file")

作为
org.apache.spark.rdd.rdd[(String,String)]
,它将包括文件路径和文件的全部内容。然后,您可以访问请求RDD第二个元素的内容

您可以使用以下工具读取整个文件:

val fileInput = sc.wholeTextFiles("path to file")

作为
org.apache.spark.rdd.rdd[(String,String)]
,它将包括文件路径和文件的全部内容。然后,您可以访问请求RDD第二个元素的内容hdfs:///user/vkocamer/bbc/business/*.txt“?实际上,我在搜索web时找到了此解决方案,但它不起作用。。。。不管怎样,现在它正在工作,显然我做错了什么…非常感谢
sc.wholeTextFile(“hdfs:///user/vkocamer/bbc/business/*.txt“
?实际上,我在搜索web时找到了此解决方案,但它不起作用。。。。不管怎样,现在它正在工作,显然我做错了什么…非常感谢