当前位置: 首页 > 知识库问答 >
问题:

使用逗号分隔符将Spark DataFrame中的一列拆分为多列

靳富
2023-03-14

我想从Dataframe中的一列创建多个列,使用JavaSpark中的逗号分隔符。

我在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);

输入

+----------------------------+
|                         name|
+-----------------------------+
|ABC1,XYZ1,GDH1,KLN1,JUL1,HAI1|
|ABC2,XYZ2,GDH2,KLN2,JUL2,HAI2|
+-----------------------------+

输出

+-----------------------------+
| Cl1| Cl2| Cl3| Cl3|Cl4 | Cl4|
+-----------------------------+
|ABC1|XYZ1|GDH1|KLN1|JUL1|HAI1|
|ABC2|XYZ2|GDH2|KLN2|JUL2|HAI2|
+-----------------------------+

共有3个答案

徐旻
2023-03-14

将本列中的 csv 读入数据集

Dataset<Row> df= spark.read
  .option("header",false)
  .option("inferSchema",true)
  .option("delimiter", ",")
  .csv(originalDF.map(x=>x.getString(0)))
郑向阳
2023-03-14
 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));
    }
劳韬
2023-03-14

你可以试试这个

scala> var dfd =Seq(("ABC1,XYZ1,GDH1,KLN1,JUL1,HAI1"),("ABC2,XYZ2,GDH2,KLN2,JUL2,HAI2")).toDF("name")

scala> dfd.withColumn("temp", split(col("name"), ",")).select((0 until 6).map(i => col("temp").getItem(i).as(s"col$i")): _* ).show
+----+----+----+----+----+----+
|col0|col1|col2|col3|col4|col5|
+----+----+----+----+----+----+
|ABC1|XYZ1|GDH1|KLN1|JUL1|HAI1|
|ABC2|XYZ2|GDH2|KLN2|JUL2|HAI2|
+----+----+----+----+----+----+

希望这对你有帮助

 类似资料:
  • 我有一个包含N个字段的数据框,如下所述。列的数量和值的长度将有所不同。 输入表: 我必须用一个序列列将其转换为以下格式。 预期输出表: 我尝试过使用explode,但explode一次只能使用一个数组。 有人知道我怎么做吗?谢谢你的帮助。

  • 问题内容: 我返回的值包含255个逗号分隔的值。有没有一种简单的方法可以将其拆分为不具有255 substr的列? 到 问题答案: 您可以使用: 我建议您在Excel(或其他电子表格)中生成255个数字的列,并使用电子表格生成SQL代码。

  • 问题内容: 当我有1、2、3等字符串列表时,我想将此列用作一列 是否可以通过sql查询? 例如) <-我知道这不起作用。 问题答案: 使用任意数字的子查询来分割您的字符串。您可以使用‘1,2,3’代替vals。 看到它正常工作

  • 我有一个PySpark数据帧,其中一列包含逗号分隔的值。该列包含的值的数量是固定的(例如4)。示例: 在这里,我想将col2拆分为4个单独的列,如下所示: 如何做到这一点?

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 问题内容: 我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键: 我想将此数据读入不提供过程语言的搜索引擎中。 那么,有没有一种方法, 要么 就这一栏中加入 或 该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示: 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。 问题答案: 在MySQL中,可以通过以下方式实现 现在要获取逗号分隔的v