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

时间:2017-08-08 09:57:55

标签: 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 = 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)

我之前已经使用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)  

我想我需要像

这样的东西
  

rstrip(&#34; \ n&#34)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以阅读整个文件:

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

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

相关问题