簡體   English   中英

使用 Apache spark java 從列內容中提取特定字符串

[英]Extracting specific string from a column content using Apache spark java

我的 dataframe 中有這個專欄:

+--------------------------------------------------------------------+
|          _classname                                                |
+--------------------------------------------------------------------+
|de.abs.org.vertrag.util.test.Elementofthetable                      |
|de.abs.org.vertrag.util.test.classes.Apachesparkproject             |
+--------------------------------------------------------------------+

我想按預期得到 dataframe:

+--------------------------------------------------------------------+
|           _classname                                               |
+--------------------------------------------------------------------+
|de.abs.org.vertrag.util.test                                        |
|de.abs.org.vertrag.util.test.classes                                |
+--------------------------------------------------------------------+

我想擺脫最后一個(。)之后的每個包的類名,這是我的代碼:

teamNamesDf = teamNamesDf.select(col("_classname"), substring_index(col("_classname"), ".\\[^A-Z]+", -1).as("testSuiteName"));

這對我不起作用:(有誰知道如何使用 Apache Spark Java 做到這一點?

你可以試試這個正則表達式,它會在 final 之前提取所有內容.

Dataset<Row> result = df.select(regexp_extract(col("_classname"), "^(.*)\\.[^\\.]*$", 1))

另一種方法是使用具有可變長度的substring_index ,該可變長度取決於. 在字符串中:

Dataset<Row> result = df.selectExpr("substring_index(_classname, '.', size(split(_classname, '\\\\.')) - 1)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM