2016-09-26 3 views
5

का उपयोग कर जावा में एक सूची या स्पार्क में सरणी से एक पंक्ति बनाने के लिए, मैं RowFactory.create() एक पंक्ति बनाने के लिए उपयोग:कैसे जावा

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

जहां "रिकॉर्ड" किसी डेटाबेस से एक रिकार्ड है, लेकिन मैं अग्रिम में "रिकॉर्ड" की लंबाई नहीं जान सकता, इसलिए मैं "पंक्ति" बनाने के लिए एक सूची या एक ऐरे का उपयोग करना चाहता हूं। स्कैला में, मैं पंक्ति या एक ऐरे से पंक्ति बनाने के लिए Row.fromSeq() का उपयोग कर सकता हूं, लेकिन मैं जावा में इसे कैसे प्राप्त कर सकता हूं?

उत्तर

8

मुझे यकीन नहीं है कि मुझे आपका प्रश्न सही तरीके से मिलता है लेकिन आप जावा में ऐरेलिस्ट से पंक्ति बनाने के लिए रोफैक्टरी का उपयोग कर सकते हैं।

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

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

हाय, जब मैं अपने विधि का उपयोग करें, मैंने पाया चिंगारी संबंध Mlist एक पूरी वस्तु के रूप में: 'पंक्ति पंक्ति = RowFactory यहाँ कैसे एक जावा आवेदन में पंक्तियाँ और डेटासेट बनाने के लिए का एक उदाहरण है .create (mlist); ' ' System.out.println ("पंक्ति संख्या:" + पंक्ति। लम्बाई()); ' 'System.out.println (" mlist number: "+ mlist.size()); ' मुझे मिला: पंक्ति संख्या: 1 मिलिस्ट संख्या: 2 – user2736706

+0

हाँ लेकिन पंक्ति में दोनों रिकॉर्ड होंगे। आप कर सकते हैं System.out.println प्रिंट करने का प्रयास करें ("पंक्ति संख्या:" + row.toSeq()); – abaghel

+0

हाय, बहुत बहुत धन्यवाद! और आप इसे आजमा सकते हैं: ऑब्जेक्ट [] rowArray = {obj1, obj2, ....} पंक्ति पंक्ति = RowFactory.create (rowArray); System.out.println ("पंक्ति संख्या:" + पंक्ति। लम्बाई()); आपको मिलेगा - पंक्ति संख्या: 6 – user2736706

2

हमें वास्तविक दुनिया अनुप्रयोगों में अक्सर डेटासेट या डेटाफ्रेम बनाने की आवश्यकता होती है।

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