dataframe—如何使用spark java在两个符号[]和“”之间选择Dataframe的行

m2xkgtsf  于 2021-07-09  发布在  Spark
关注(0)|答案(2)|浏览(363)

我有这个Dataframe,我想从 col("time") 以及 col("testsuiteClass") 特定行,例如在以下数据框中,我的输入是:

+--------------------+------------------------- +
|                Time|      testSuiteClass      |
+--------------------+--------------------------+
|[2021-03-26] Tracker|StartingSuite'org.opin...'|
|[2021-03-27] Tracker|StartingSuite'org.opin...'|
+--------------------+--------------------------+

我想要得到的输出:

+--------------------+------------------------- +
|                Time|      testSuiteClass      |
+--------------------+--------------------------+
|[2021-03-26]        |'org.opin...'             |
|[2021-03-27]        |'org.opin...'             |
+--------------------+--------------------------+

有人能帮我用JavaSparkDataFrame实现吗?

ruyhziif

ruyhziif1#

你可以用 regexp_extract 按模式从时间列中提取日期 regexp_replace 摆脱 "StartingSuite" :

Dataset<Row> result = df
    .select(
        regexp_extract(col("Time"), "\\[[0-9]{4}-[0-9]{2}-[0-9]{2}\\]", 0)
                 .alias("Time"),
        regexp_replace(col("testSuiteClass"), "StartingSuite", "")
                 .alias("testSuiteClass")
    );
klsxnrf1

klsxnrf12#

你可以用 regexp_extract 要提取相关符号模式:

Dataset<Row> df2 = df.withColumn(
    "Time", 
    regexp_extract(col("Time"), "\\[.*\\]", 0)
).withColumn(
    "testSuiteClass", 
    regexp_extract(col("testSuiteClass"), "'.*'", 0)
)

df2.show()
+------------+--------------+
|        Time|testSuiteClass|
+------------+--------------+
|[2021-03-26]| 'org.opin...'|
|[2021-03-27]| 'org.opin...'|
+------------+--------------+

相关问题