私はSparkのデータフレームに複数のhtmlファイルを読み込んでいます。 私は完璧に動作Apache Sparkで範囲単位の反復変数を追加する
val dataset = spark
.sparkContext
.wholeTextFiles(inputPath)
.toDF("filepath", "filecontent")
.withColumn("biz_name", parseDocValue(".biz-page-title")('filecontent))
.withColumn("biz_website", parseDocValue(".biz-website a")('filecontent))
...
def parseDocValue(cssSelectorQuery: String) =
udf((html: String) => Jsoup.parse(html).select(cssSelectorQuery).text())
UDFカスタムを使用してデータフレームの列にHTMLの要素を変換しています、しかし各withColumn
呼び出しは冗長であるHTML文字列の解析になります。
行ごとに "filecontent"カラムに基づいて1つの解析済みドキュメント(Jsoup.parse(html)
)を生成し、それをデータフレーム内のすべてのwithColumn
コールで使用できる方法がありますか(ルックアップテーブルなどは使用しないでください)
それとも私もデータフレームを使用して試してみて、ちょうどRDDのを使うべきではないのですか?
サンプルテキスト文字列で更新できますか? –
本質的には 'wholeTextFiles'の非並列化に問題があります(たとえば、64コアクラスタの2人のエグゼキュータ、さらに分割する前に)ので、おそらく全体を書き直すことになります。私はその問題に取り組んだとき、提案を更新して見ていきます。ご不便をおかけして申し訳ございません。 –
解決しましたか? –