【发布时间】:2015-12-16 15:10:21
【问题描述】:
使用 Python 和 Spark:
假设我有一个包含句子的行的 DataFrame,我如何 normalize(从 DBMS 术语)将句子 DataFrame 转换为另一个 DataFrame,每行包含一个从句子中拆分出来的单词?
我认为这主要是telegraph problem。
例如,假设df_sentences 看起来像这样:
[Row(sentence_id=1, sentence=u'the dog ran the fastest.'),
Row(sentence_id=2, sentence=u'the cat sat down.')]
我正在寻找将df_sentences 转换为df_words 的转换,它将采用这两行并构建一个更大的(行数)DataFrame,如下所示。注意 sentence_id 被带到了新表中:
[Row(sentence_id=1, word=u'the'),
Row(sentence_id=1, word=u'the'),
Row(sentence_id=1, word=u'fastest'),
Row(sentence_id=2, word=u'dog'),
Row(sentence_id=2, word=u'ran'),
Row(sentence_id=2, word=u'cat'),
...clip...]
现在,目前我对行数或唯一词并不真正感兴趣,那是因为我想加入 sentence_id 上的其他 RDD 以获取我在其他地方存储的其他有趣数据。
我怀疑 Spark 中的大部分能力都在于管道中的这些间歇性转换,因此我想了解做事的最佳方式并开始收集我自己的 sn-ps/etc。
【问题讨论】:
-
按照这里的文档-spark.apache.org/docs/latest/api/python/pyspark.sql.html我想你可以使用
flatMap,获取一个新的RDD并创建一个新的数据框。
标签: python apache-spark dataframe pyspark apache-spark-sql