scala – 从Apache Spark中的Avro文件读取不受支持的联合类型组
我正在尝试从读取csv平面文件切换到火花上的avro文件.
跟随 https://github.com/databricks/spark-avro 我用: import com.databricks.spark.avro._ val sqlContext = new org.apache.spark.sql.SQLContext(sc) val df = sqlContext.read.avro("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro") 并得到 java.lang.UnsupportedOperationException: This mix of union types is not supported (see README): ArrayBuffer(STRING) 自述文件清楚地说明:
当我尝试对同一个文件进行文本读取时,我可以看到模式 val df = sc.textFile("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro") df.take(2).foreach(println)
因为我几乎没有控制我得到这些文件的格式, 我用gc dataproc
任何帮助将不胜感激….. 解决方法
您可以找到适用于Spark SQL的任何解决方案. Spark中的每一列都必须包含可以表示为单个
DataType 的值,因此复杂的联??合类型根本不能用Spark Dataframe表示.
如果要读取这样的数据,您应该使用RDD API,并将加载的数据转换为DataFrame. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |