【发布时间】:2019-08-08 09:40:57
【问题描述】:
我有一个场景,我需要将 Informatica 映射(源和目标 SQL Server)转换为 Pyspark 代码(源 blob 文件和目标 Hive)。在表达式转换中,一列包含“reg_extract”函数,我需要将其转换为 Pyspark 数据框。我的最终目标是在 Hive 中创建与在 SQL Server 中相同的表。
Pyspark 中 reg_extract 函数的替代品是什么?我正在使用 Pyspark 2。
以下是来自 Informatica 表达式转换的代码(用于一列变量字段):
LTRIM(RTRIM(IIF(instr(v_DATE,'AMENDED')>0,
reg_Extract(DATE,'.*(^\w+\s+[0-9]{2}[,]\s+[0-9]{4}|^\w+\s+[0-9]{1}[,]\s+[0-9]{4}).*'),
reg_Extract(DATE,'.*((\s0?[1-9]|1[012])[./-](0?[1-9]|[12][0-9]|3[01])[./-][0-9]{2,4}|(^0?[1-9]|1[012])[./-](0?[1-9]|[12][0-9]|3[01])[./-][0-9]{2,4}|(0[1-9]|[12][0-9]|3[01])[./-](0?[1-9]|1[012])[./-][0-9]{2,4}|\s\w+\s+(0?[1-9]|[12][0-9]|3[01])[.,](\s+)?[0-9]{4}|^\w+\s+(0?[1-9]|[12][0-9]|3[01])[.,](\s+)?[0-9]{4}|^(19|20)[0-9]{2}|^[0-9]{2}\s+\w+\s+[0-9]{4}|^[0-9]{6}|^(0?[1-9]|[12][0-9]|3[01])\s+\w+[.,]?\s+(19|20)[0-9]{2}|^[0-9]{1,2}[-,/]\w+[-,/][0-9]{2,4}).*'))))
在 Pyspark 中,我将源文件保存在一个数据框中并选择了所需的列。之后我无法继续。
input_data=spark.read.csv(file_path,header=True)
input_data.createOrReplaceTempView("input_data")
df_test = "select ACCESSION_NUMBER, DATE, REPORTING_PERSON from input_data"
df = sqlContext.sql(df_test)
我是 Pyspark/SparkSQL 的新手。请帮忙。
【问题讨论】:
标签: pyspark pyspark-sql informatica-powercenter