1
我想读的使用星火的Avro的文件(我使用的Spark 1.3.0所以我没有数据帧)阅读的Avro文件,并提取列的值
我用这块读取的Avro文件代码
import org.apache.avro.generic.GenericRecord
import org.apache.avro.mapred.AvroKey
import org.apache.avro.mapreduce.AvroKeyInputFormat
import org.apache.hadoop.io.NullWritable
import org.apache.spark.SparkContext
private def readAvro(sparkContext: SparkContext, path: String) = {
sparkContext.newAPIHadoopFile[
AvroKey[GenericRecord],
NullWritable,
AvroKeyInputFormat[GenericRecord]
](path)
}
我执行此操作并获取RDD。现在来自RDD,我如何提取特定列的值?像循环遍历所有记录并给出列名的值?
[编辑]作为由Justin建议下面我试图
val rdd = sc.newAPIHadoopFile[AvroKey[GenericRecord], NullWritable, AvroKeyInputFormat[GenericRecord]](input)
rdd.map(record=> record._1.get("accountId")).toArray().foreach(println)
但我得到一个错误
<console>:34: error: value get is not a member of org.apache.avro.mapred.AvroKey[org.apache.avro.generic.GenericRecord]
rdd.map(record=> record._1.get("accountId")).toArray().foreach(println)
星火1.3.0 _does_有DataFrames只提取列:https://spark.apache.org/docs/1.3.0/sql-programming-guide.html –
是有一种方法可以在spark 1.3.0数据框中加载avro文件?我没有看到您提供的文档链接中的任何内容。 –