繁体   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