spark String转Row java代码
时间: 2023-10-13 12:14:26 浏览: 51
假设我们有一个String类型的数据,如下所示:
```
String data = "John,Smith,25,Male";
```
我们想要将这个数据转换成Row类型的数据,可以通过以下Java代码实现:
```java
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.types.DataType;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import java.util.Arrays;
public class StringToRow {
public static void main(String[] args) {
String data = "John,Smith,25,Male";
String[] fields = data.split(",");
StructType schema = DataTypes.createStructType(new StructField[] {
DataTypes.createStructField("First_Name", DataTypes.StringType, true),
DataTypes.createStructField("Last_Name", DataTypes.StringType, true),
DataTypes.createStructField("Age", DataTypes.IntegerType, true),
DataTypes.createStructField("Gender", DataTypes.StringType, true)
});
Row row = RowFactory.create(Arrays.asList(fields));
System.out.println(row.schema());
System.out.println(row);
}
}
```
这段代码首先将字符串数据按照逗号分割成数组,然后定义了一个StructType类型的schema,用于指定Row中数据的类型和顺序。最后,通过RowFactory.create()方法将数组转换成Row类型的数据。运行代码,可以得到如下输出:
```
StructType(StructField(First_Name,StringType,true), StructField(Last_Name,StringType,true), StructField(Age,IntegerType,true), StructField(Gender,StringType,true))
[John, Smith, 25, Male]
```
这表明我们成功将String类型的数据转换成了Row类型的数据。