SparklyR/Spark SQL 根据 bites/character 计数将字符串分成多列
SparklyR/Spark SQL split string into multiple columns based on number of bites/character count
我有一个 spark 数据框 TABLE1,其中一列有 100000 行,每行包含一个相同长度的字符串
AA105LONDEN 03162017045262017 16953563ABCDEF
我想根据下面分隔的行将每一行分成多列,包括白色 space 作为单独的列。
AA|105|LONDEN| |0316|2017|04526|2017| |1695|3563|ABCDEF
目前我正在尝试将 DBI 包与如下所示的代码一起使用:
library(DBI)
newdataframe <- dbGetQuery(sc,"INSERT INTO TABLE2
(COLUMN1, COLUMN2, COLUMN3, COLUMN4)
SELECT SUBSTR(TRIM(COLUMN_NAME),1,3),
SUBSTR(TRIM(COLUMN_NAME),4,8),
SUBSTR(TRIM(COLUMN_NAME),9,12),
SUBSTR(TRIM(COLUMN_NAME),12,15)
FROM TABLE1
WHERE COLUMN_NAME IS NOT NULL")
我有一个 spark 数据框 TABLE1,其中一列有 100000 行,每行包含一个相同长度的字符串
AA105LONDEN 03162017045262017 16953563ABCDEF
我想根据下面分隔的行将每一行分成多列,包括白色 space 作为单独的列。
AA|105|LONDEN| |0316|2017|04526|2017| |1695|3563|ABCDEF
目前我正在尝试将 DBI 包与如下所示的代码一起使用:
library(DBI)
newdataframe <- dbGetQuery(sc,"INSERT INTO TABLE2
(COLUMN1, COLUMN2, COLUMN3, COLUMN4)
SELECT SUBSTR(TRIM(COLUMN_NAME),1,3),
SUBSTR(TRIM(COLUMN_NAME),4,8),
SUBSTR(TRIM(COLUMN_NAME),9,12),
SUBSTR(TRIM(COLUMN_NAME),12,15)
FROM TABLE1
WHERE COLUMN_NAME IS NOT NULL")
但这似乎不起作用。此外,即使它只是 returns 一个 R 数据帧,我也需要它在 spark 数据帧中工作。我正在寻找除 SQL 以外的替代建议,或者寻找适用于 spark 和 return 的正确语法,然后我可以在其上进行 ML 解析的 Spark 数据帧。任何想法。
提前致谢。
我们用它来创建 Dataframe。它会给出正确的结果。
sqlContext.sql("select substr(COLUMN_NAME,1,2),
substr(COLUMN_NAME,3,3),
substr(COLUMN_NAME,6,6),
substr(COLUMN_NAME,12,4),
substr(COLUMN_NAME,16,4),
substr(COLUMN_NAME,20,4),
substr(COLUMN_NAME,24,5) ,
substr(COLUMN_NAME,29,4) ,
substr(COLUMN_NAME,33,1) ,
substr(COLUMN_NAME,34,4) ,
substr(COLUMN_NAME,38,4) ,
substr(COLUMN_NAME,42,6)
TABLE1
WHERE COLUMN_NAME IS NOT NULL")
我有一个 spark 数据框 TABLE1,其中一列有 100000 行,每行包含一个相同长度的字符串
AA105LONDEN 03162017045262017 16953563ABCDEF
我想根据下面分隔的行将每一行分成多列,包括白色 space 作为单独的列。
AA|105|LONDEN| |0316|2017|04526|2017| |1695|3563|ABCDEF
目前我正在尝试将 DBI 包与如下所示的代码一起使用:
library(DBI)
newdataframe <- dbGetQuery(sc,"INSERT INTO TABLE2
(COLUMN1, COLUMN2, COLUMN3, COLUMN4)
SELECT SUBSTR(TRIM(COLUMN_NAME),1,3),
SUBSTR(TRIM(COLUMN_NAME),4,8),
SUBSTR(TRIM(COLUMN_NAME),9,12),
SUBSTR(TRIM(COLUMN_NAME),12,15)
FROM TABLE1
WHERE COLUMN_NAME IS NOT NULL")
我有一个 spark 数据框 TABLE1,其中一列有 100000 行,每行包含一个相同长度的字符串
AA105LONDEN 03162017045262017 16953563ABCDEF
我想根据下面分隔的行将每一行分成多列,包括白色 space 作为单独的列。
AA|105|LONDEN| |0316|2017|04526|2017| |1695|3563|ABCDEF
目前我正在尝试将 DBI 包与如下所示的代码一起使用:
library(DBI)
newdataframe <- dbGetQuery(sc,"INSERT INTO TABLE2
(COLUMN1, COLUMN2, COLUMN3, COLUMN4)
SELECT SUBSTR(TRIM(COLUMN_NAME),1,3),
SUBSTR(TRIM(COLUMN_NAME),4,8),
SUBSTR(TRIM(COLUMN_NAME),9,12),
SUBSTR(TRIM(COLUMN_NAME),12,15)
FROM TABLE1
WHERE COLUMN_NAME IS NOT NULL")
但这似乎不起作用。此外,即使它只是 returns 一个 R 数据帧,我也需要它在 spark 数据帧中工作。我正在寻找除 SQL 以外的替代建议,或者寻找适用于 spark 和 return 的正确语法,然后我可以在其上进行 ML 解析的 Spark 数据帧。任何想法。
提前致谢。
我们用它来创建 Dataframe。它会给出正确的结果。
sqlContext.sql("select substr(COLUMN_NAME,1,2),
substr(COLUMN_NAME,3,3),
substr(COLUMN_NAME,6,6),
substr(COLUMN_NAME,12,4),
substr(COLUMN_NAME,16,4),
substr(COLUMN_NAME,20,4),
substr(COLUMN_NAME,24,5) ,
substr(COLUMN_NAME,29,4) ,
substr(COLUMN_NAME,33,1) ,
substr(COLUMN_NAME,34,4) ,
substr(COLUMN_NAME,38,4) ,
substr(COLUMN_NAME,42,6)
TABLE1
WHERE COLUMN_NAME IS NOT NULL")