将文件名添加到wholeTextFiles上的RDD行

时间:2016-06-15 18:04:56

标签: python apache-spark pyspark

我一直在谷歌搜索并尝试了几个小时而没有运气,希望你们中的任何人都可以提供建议。

我正在将大量文件读入Spark RDD,并且我想将包含时间戳的文件名附加到RDD的每一行中。到目前为止,这就是我所得到的。

def append_name(x):
    filename = x[0].split('\n') #take the filename
    content = x[1].split('\n') #take the content
    output = [(row.split(','), filename) for row in content]
    flattened = [item for sublist in output for item in sublist]
    return flattened

data_file = sc.wholeTextFiles("data/").flatMap(lambda l: append_name(l))

data_file.take(1)

我的输出如下:

[[u'25689119206459',
  u'True',
  u'3',
  u'main',
  u'used_car',
  u'Huzhou',
  u'False',
  u'False',
  u'21824706815494',
  u'0',
  u'http://jump.zhineng.58.com/clk?target=mv7V0A-b5HTh',
  u'0\r'],
 [u'file:/home/user/data/light_2016-06-01T04-02-27_node1.csv']]

这仍然是列表清单......即使我已经将它弄平了。我错过了什么想法?我也尝试使用建议的解决方案here并得到相同的结果。

感谢。

2 个答案:

答案 0 :(得分:3)

试试这个:

<article>
   <header><h1>Product title</h1><header>
   <img src="image.jpg"/>
   <p>Description</p>
   <p>Price</p>
   <p><a href="...">Order</a></p>
</article>

<article>
  <header><h1>Related products</h1></header>
  <section>
    <a href="..."><img src="image1.jpg"><br/>Product 1</a><br/>Price
  </section>
  <section>
    <a href="..."><img src="image2.jpg"><br/>Product 2</a><br/>Price
  </section>
  <section>
    <a href="..."><img src="image3.jpg"><br/>Product 3</a><br/>Price
  </section>
</article>

答案 1 :(得分:0)

这是另一个更简单的版本:

allInOneRDD = sc.wholeTextFiles("data/").flatMap(lambda l:[line+","+f for line in c.splitlines()])