2016-08-22 1 views
1

Я новичок, чтобы искра и пытаюсь загрузить данные avro в искру 'dataset' (spark 1.6), используя java. Я вижу несколько примеров в scala, но не в java. Любые указатели на примеры в java будут полезны. Я попытался создать javaRDD, а затем преобразовать его в «набор данных». Я считаю, что должен быть прямой путь.Прочтите данные об Avro с использованием набора данных искры в java

+0

Я также столкнулся с этой проблемой, и я не мог понять это. Не знаю, как вы создаете RDD, но я получал их от Kafka, не зная схемы. Итак, чтобы создать DataSet, мне пришлось изменить формат отправляемых данных: вместо avro-serialized data json-string. После этого я просто использовал: 'session.read(). Json (JavaRDD);'. Или, если вы все еще хотите использовать avro, тогда я думаю, что путь заключается в том, чтобы поместить это в файл avro и 'session.read(). Format (« avro »). Load (« avrofile.avro »);' (не уверен значения строки формата). Все еще надеюсь, что есть простой способ, поэтому добавим вопрос в избранное. – tomkou

+0

Но, может быть, вы найдете здесь подходящий пример http://spark.apache.org/docs/latest/sql-programming-guide.html. Просто выберите вкладку Java. – tomkou

+0

я был в состоянии прочитать данные с помощью AVRO Dataset DF = spark.read() формат ("com.databricks.spark.avro") \t \t \t \t .load ("users.avro"). где user.avro - это файл данных, а User.avsc - это схема, которую я использовал. Но я не могу преобразовать Dataset в Dataset . Я пробовал Кодер UserEncoder = Encoders.bean (User.class); /*(User.class является Avro сгенерированный класс) * DF = spark.read() Формат/ Dataset. ("Com.databricks.spark.avro") \t \t \t \t .load ("users.avro") .as (UserEncoder); – Pradeep

ответ

1

первую очередь вам необходимо установить hadoop.home.dir

System.setProperty("hadoop.home.dir", "C:/app/hadoopo273/winutils-master/hadoop-2.7.1"); 

затем создать искру сессии с указанием, где Avro файл будет расположен

SparkSession spark = SparkSession .builder().master("local").appName("ASH").config("spark.cassandra.connection.host", "127.0.0.1").config("spark.sql.warehouse.dir", "file:///C:/cygwin64/home/a622520/dev/AshMiner2/cass-spark-embedded/cassspark/cassspark.all/spark-warehouse/").getOrCreate(); 

В моем коде я использую внедренный искра environement

// Creates a DataFrame from a specified file 
Dataset<Row> df = spark.read().format("com.databricks.spark.avro") .load("./Ash.avro"); 
df.createOrReplaceTempView("words"); 
Dataset<Row> wordCountsDataFrame = spark.sql("select count(*) as total from words"); 
wordCountsDataFrame.show(); 

надеюсь, что это помогает