簡體   English   中英

使用Spark SQL時無法將B強制轉換為java.lang.String

[英]Getting B cannot be cast to java.lang.String when using Spark SQL

我的問題是當我嘗試從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)

因此,我們擁有的字段之一被表示為字節數組。 以下python打印構造不起作用

repr(sqlRdd.take(2))

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

兩者都導致ClassCastException。

所以..其他人怎么做? 我開始自己動手了(不幸的是,不能在這里復制/粘貼。)但是我有點懷疑是在重新發明輪子。

嘗試

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

我認為自Spark 1.1.0起,他們就將其破壞了-將二進制讀為可以正常工作的字符串,然后他們使其不起作用,但添加了此標志,但將其默認設置為false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM