2

私の問題は、 からsql.Rowとしてデータを読み込もうとしているときですString。私は pyspark を使用していますが、Scala API でもこの問題が発生していると聞きました。

pyspark.sql.Row オブジェクトはかなり非妥協的な生き物です。次の例外がスローされます。

java.lang.ClassCastException: [B cannot be cast to java.lang.String
 at org.apache.spark.sql.catalyst.expressions.GenericRow.getString(Row.scala 183)

つまり、フィールドの 1 つがバイト配列として表されています。次の python 印刷構造は機能しません

repr(sqlRdd.take(2))

また

import pprint
pprint.pprint(sqlRdd.take(2))

どちらも ClassCastException になります。

それで..他の人々はこれをどのように行うのですか?私は自分自身を転がし始めました(残念ながらここでコピー/貼り付けすることはできません..)しかし、これは少し車輪の再発明です..またはそう思います。

4

1 に答える 1

3

試す

sqlContext.setConf("spark.sql.parquet.binaryAsString", "true")

Spark 1.1.0以降、彼らはそれを壊したと思います-以前はバイナリを文字列として読み取っていましたが、機能しなくなりましたが、このフラグを追加しましたが、デフォルトをfalseに設定しました。

于 2015-09-18T09:42:36.760 に答える