2016-10-03 16 views
6

BenVeritabanını (kovan tablosundan elde edilen), hadoop'a nasıl yazılır? SequenceFile ve RCFile?

    doğrudan
  • ORC
  • PARQUET

    ve

  • TEXTFILE

  • AVRO
içine yazabiliyorum Veritabanlarından ek bağımlılıklar kullanarak

.

<dependency> 
     <groupId>com.databricks</groupId> 
     <artifactId>spark-csv_2.10</artifactId> 
     <version>1.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.databricks</groupId> 
     <artifactId>spark-avro_2.10</artifactId> 
     <version>2.0.1</version> 
    </dependency> 

örnek kod:

SparkContext sc = new SparkContext(conf); 
    HiveContext hc = new HiveContext(sc); 
    DataFrame df = hc.table(hiveTableName); 
    df.printSchema(); 
    DataFrameWriter writer = df.repartition(1).write(); 

    if ("ORC".equalsIgnoreCase(hdfsFileFormat)) { 
     writer.orc(outputHdfsFile); 

    } else if ("PARQUET".equalsIgnoreCase(hdfsFileFormat)) { 
     writer.parquet(outputHdfsFile); 

    } else if ("TEXTFILE".equalsIgnoreCase(hdfsFileFormat)) { 
     writer.format("com.databricks.spark.csv").option("header", "true").save(outputHdfsFile); 

    } else if ("AVRO".equalsIgnoreCase(hdfsFileFormat)) { 
     writer.format("com.databricks.spark.avro").save(outputHdfsFile); 
    } 

Hadoop SequenceFile ve RCFile içine dataframe yazmak için herhangi bir yolu var mı?

+0

dizisi dosyası ne tür? csv, json? –

cevap

2

'u RDD seri hale getirilmiş nesnelerin Sıra Dizini olarak kaydetmek için kullanabilirsiniz. Yani durumda DataFrame den RDD almak zorunda:

JavaRDD<Row> rdd = df.javaRDD; 
rdd.saveAsObjectFile(outputHdfsFile); 
+0

Çalışıyor. RCFile formatı olarak yazmanın bir anlamı var mı? –

+0

Tamamen emin değilim, ancak Spark'un dokümantasyondan geçtikten sonra RCFiles'a kutudan yazmayı desteklediğini sanmıyorum. Sanırım Parke gibi bir şey kullanmalısın. – nicoring

+0

@dev question Sorunuzu cevapladıysa bunu bir cevap olarak işaretler misiniz? – nicoring

İlgili konular