如何在pyspark中拆除CLOB?

我从Oracle压缩了数据,并且该表的列包含CLOB DataType,我将其设置为String以获取HDFS中的数据。现在,我必须拆除CLOB数据,并在Hive中为此创建一个单独的表

我有txt格式的HDFS文件。我可以隔离CLOB数据,并希望为CLOB制作DataFrame

CLOB的格式如下:

[name] Bob [Age] 21 [City] London [work] No,[name] Steve [Age] 51 [City] London [work] Yes,.....
around a million rows like this
sc.setLogLevel("WARN")
log_txt=sc.textFile("/path/to/data/sample_data.txt")
header = log_txt.first()

log_txt = log_txt.filter(lambda line: line != header)
log_txt.take(10)
  [u'0\\tdog\\t20160906182001\\tgoogle.com',u'1\\tcat\\t20151231120504\\tgoogle.com']

temp_var = log_txt.map(lambda k: k.split("\\t"))

log_df=temp_var.toDF(header.split("\\t"))

log_df = log_df.withColumn("field1Int",log_df["field1"].cast(Integertype()))
log_df = log_df.withColumn("field3TimeStamp",log_df["field1"].cast(TimestampType()))

log_df.schema
StructType(List(StructField(field1,StringType,true),StructField(field2,StructField(field3,StructField(field4,StructField(field1Int,Integertype,StructField(field3TimeStamp,TimestampType,true)))

这就是我创建DataFrame的方式。

我需要您的帮助来确定如何以字符串数据类型的形式拆卸CLOB。并在其上创建一个表格。

拆卸后,我希望表格具有以下列:

+---------+---------------+----------+-----+
|Name     |Age            | City     | Work|
+---------+---------------+----------+-----+
|      Bob|           21  |London    | No  |
|    Steve|           51  |London    |Yes  |
+---------+---------------+----------+-----+

任何帮助将不胜感激。

Kelvin520 回答:如何在pyspark中拆除CLOB?

在这里:

import re
from pyspark.sql import Row

rdd = sc.parallelize(["[name] Bob [Age] 21 [City] London [work] No","[name] Steve [Age] 51 [City] London [work] Yes","[name] Steve [Age] [City] London [work] Yes"])

def clob_to_table(line):
    m = re.search(r"\[name\](.*)?\[Age\](.*)?\[City\](.*)?\[work\](.*)?",line)
    return Row(name=m.group(1),age=m.group(2),city=m.group(3),work=m.group(4))

rdd = rdd.map(clob_to_table)

df = spark.createDataFrame(rdd)
df.show()

+----+--------+-------+----+
| age|    city|   name|work|
+----+--------+-------+----+
| 21 | London |   Bob |  No|
| 51 | London | Steve | Yes|
|    | London | Steve | Yes
+----+--------+-------+----+
本文链接:https://www.f2er.com/3119729.html

大家都在问