2016-09-26 7 views
5

W Javie używam RowFactory.create(), aby utworzyć rząd:Jak utworzyć wiersz z listy lub tablicy w Spark używając Java

Row row = RowFactory.create(record.getLong(1), record.getInt(2), record.getString(3)); 

gdzie „zapis” jest rekord z bazy danych, ale nie mogę znać długości "rekordu" z góry, więc chcę użyć listy lub tablicy do utworzenia "wiersza". W Scali mogę użyć Row.fromSeq() do utworzenia wiersza z listy lub tablicy, ale jak mogę to osiągnąć w Javie?

Odpowiedz

8

Nie jestem pewien, czy poprawnie otrzymam pytanie, ale można użyć narzędzia RowFactory do utworzenia wiersza z tablicy ArrayList w języku Java.

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

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

hi, kiedy używać metody, znalazłem na uwadze iskra mlist jako całość obiektu: 'row row = RowFactory .create (mlist); ' ' System.out.println ("numer wiersza:" + wiersz.length()); ' ' System.out.println ("numer mlist:" + mlist.size()); ' Mam: numer wiersza: 1 numer m: 2 – user2736706

+0

Tak, ale wiersz będzie miał oba rekordy. Możesz spróbuj wydrukować System.out.println ("numer wiersza:" + wiersz.toSeq()); – abaghel

+0

Cześć, dziękuję bardzo! Możesz spróbować: Obiekt [] rowArray = {obj1, obj2, ....} Wiersz rzędu = RowFactory.create (rowArray); System.out.println ("numer wiersza:" + wiersz.length()); Otrzymasz - numer wiersza: 6 – user2736706

2

Często potrzebujemy tworzyć zestawy danych lub ramki danych w aplikacjach świata rzeczywistego. Oto przykład, w jaki sposób tworzyć wiersze i zestawów danych w aplikacji Java:

// 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| 
+-----+------------+---------+