2016-09-26 11 views
5

kullanarak Spark List veya Array Bir Satır oluşturmak için ben RowFactory.create() Bir Satır oluşturmak için kullanın:nasıl Java'da java

"kayıt" bir veritabanından bir kayıt olduğunu
Row row = RowFactory.create(record.getLong(1), record.getInt(2), record.getString(3)); 

, ama önceden "kayıt" uzunluğunu bilmiyorum, bu yüzden "satır" oluşturmak için bir Liste veya bir Array kullanmak istiyorum. Scala'da, bir Listeden veya bir Diziden bir Satır oluşturmak için Row.fromSeq() kullanabilirim, ancak bunu Java’da nasıl yapabilirim?

cevap

8

Sorunuzu doğru bir şekilde aldığımdan emin değilim, ancak java'da ArrayList'ten Row oluşturmak için RowFactory'yi kullanabilirsiniz.

List<MyData> mlist = new ArrayList<MyData>(); 
    mlist.add(d1); 
    mlist.add(d2); 

Row row = RowFactory.create(mlist.toArray()); 
+0

selam buldum kıvılcım saygı mlist bir bütün nesne olarak: 'Satır satır = RowFactory Burada bir Java uygulaması satır ve Dataset nasıl oluşturulacağını örneğidir .create (mlist) ' 'System.out.println ("satır numarası:" + row.length());' 'System.out.println ("mlist numarası:" + mlist.size()) Elimde: satır numarası: 1 mlist numarası: 2 – user2736706

+0

Evet ama satırın her iki kaydı da olacak. System.out.println yazdırmayı deneyin ("satır numarası:" + row.toSeq()); – abaghel

+0

Merhaba, çok teşekkürler! Ve bunu deneyebilirsiniz: Nesne [] rowArray = {obj1, obj2, ....} Satır sırası = RowFactory.create (rowArray); System.out.println ("satır numarası:" + satır.length()); - Sıra numarası: 6 – user2736706

2

Gerçek dünya uygulamalarında Datasets veya Dataframes oluşturmamız gerekir. Ben senin yöntemini kullandığınızda

// initialize first SQLContext 
SQLContext sqlContext = ... 
StructType schemata = DataTypes.createStructType(
     new StructField[]{ 
       createStructField("NAME", StringType, false), 
       createStructField("STRING_VALUE", StringType, false), 
       createStructField("NUM_VALUE", IntegerType, false), 
     }); 
Row r1 = RowFactory.create("name1", "value1", 1); 
Row r2 = RowFactory.create("name2", "value2", 2); 
List<Row> rowList = ImmutableList.of(r1, r2); 
Dataset<Row> data = sqlContext.createDataFrame(rowList, schemata); 
+-----+------------+---------+ 
| NAME|STRING_VALUE|NUM_VALUE| 
+-----+------------+---------+ 
|name1|  value1|  1| 
|name2|  value2|  2| 
+-----+------------+---------+ 
İlgili konular