Apache spark 使用逗号分隔符将Spark数据框中的一列拆分为多列
我想使用JavaSpark中的逗号分隔符从Apache spark 使用逗号分隔符将Spark数据框中的一列拆分为多列,apache-spark,java-8,apache-spark-sql,Apache Spark,Java 8,Apache Spark Sql,我想使用JavaSpark中的逗号分隔符从Dataframe中的一列创建多列 我在DataFrame的一列中有一个带逗号的值,希望使用逗号分隔符将其拆分为多个列。我有以下代码: Dataset<Row> dfreq1 = spark.read().format("json").option("inferSchema", "true") .load("new.json"); dfreq1.show(5, 300); dfreq1.creat
Dataframe
中的一列创建多列
我在DataFrame
的一列中有一个带逗号的值,希望使用逗号分隔符将其拆分为多个列。我有以下代码:
Dataset<Row> dfreq1 = spark.read().format("json").option("inferSchema", "true")
.load("new.json");
dfreq1.show(5, 300);
dfreq1.createOrReplaceTempView("tempdata");
Dataset<Row> dfreq2 = dfreq1.sqlContext().sql("select split(names, '|') from tempdata");
dfreq2.show(5, 300);
输出
+-----------------------------+
| Cl1| Cl2| Cl3| Cl3|Cl4 | Cl4|
+-----------------------------+
|ABC1|XYZ1|GDH1|KLN1|JUL1|HAI1|
|ABC2|XYZ2|GDH2|KLN2|JUL2|HAI2|
+-----------------------------+
将此列中的csv读入数据集
Dataset<Row> df= spark.read
.option("header",false)
.option("inferSchema",true)
.option("delimiter", ",")
.csv(originalDF.map(x=>x.getString(0)))
Dataset df=spark.read
.选项(“标题”,false)
.option(“推断模式”,true)
.选项(“分隔符“,”,”)
.csv(originalDF.map(x=>x.getString(0)))
将此列中的csv读取到数据集中
Dataset<Row> df= spark.read
.option("header",false)
.option("inferSchema",true)
.option("delimiter", ",")
.csv(originalDF.map(x=>x.getString(0)))
Dataset df=spark.read
.选项(“标题”,false)
.option(“推断模式”,true)
.选项(“分隔符“,”,”)
.csv(originalDF.map(x=>x.getString(0)))
你可以试试这个
希望这对你有帮助
List<String> schemaList = Arrays.asList("name","gender","sale_amount","event","age","shop_time");
Column column = functions.col("value");
Column linesSplit = functions.split(column,"@#");
for(int i=0;i<schemaList.size();i++){
lines = lines.withColumn(schemaList.get(i),linesSplit.getItem(i));
}
你可以试试这个
希望这能帮助你List schemaList=Arrays.asList(“姓名”、“性别”、“销售额”、“事件”、“年龄”、“购物时间”);
List<String> schemaList = Arrays.asList("name","gender","sale_amount","event","age","shop_time");
Column column = functions.col("value");
Column linesSplit = functions.split(column,"@#");
for(int i=0;i<schemaList.size();i++){
lines = lines.withColumn(schemaList.get(i),linesSplit.getItem(i));
}
Column Column=functions.col(“值”);
Column linesSplit=functions.split(列“@#”);
对于(inti=0;iList schemaList=Arrays.asList(“姓名”、“性别”、“销售额”、“事件”、“年龄”、“购物时间”);
Column Column=functions.col(“值”);
Column linesSplit=functions.split(列“@#”);
对于(int i=0;我根据“,”和getItem by Values显示值。您可以将其保存为文本,然后读取为csvThanks。对此我不清楚。请提供javacode@Tamil你知道拆分后固定的列数吗?根据“,”和getItem by Values拆分值你可以将其保存为文本,然后读取为csvThanks。我不是我不清楚。你能提供java吗code@Tamil你知道拆分后固定的列数吗?谢谢@Mahesh Gupta。我使用Spark和Java8。如果你用java提供代码,那就太好了。@Tamil我想你只需要将语法从scala更改为java,它必须是WorksThank@Mahesh Gupta。我使用Spark和Java8。如果你用java提供代码,那就太好了。@Tamil我想你只需要把scala的语法改成java就可以了