gpt4 book ai didi

hadoop - 从包含以Map形式的数据的文件中创建配置单元表(转推-> 0,loc->无)

转载 作者:行者123 更新时间:2023-12-02 20:37:07 26 4
gpt4 key购买 nike

如何从包含以下格式数据的文件中创建配置单元表

map (转推-> 0,位置->无,情绪->中立,文字->这是类加罗尔另一个保存最完好的 secret 。要检查一下!想分享这座城市的 secret 吗? > en,created_at-> 1528369782000,用户-> BangaloreTimes1,主题标签-> [Ljava.lang.String; @ 6acc78cc)

下面的代码生成o / p。

      englishtweets.foreachRDD{(rdd, time) =>
rdd.map(t => {
Map(
"user"-> t.getUser.getScreenName,
"created_at" -> t.getCreatedAt.getTime.toString,
"location" -> Option(t.getGeoLocation).map(geo => { s"${geo.getLatitude},${geo.getLongitude}" }),
"text" -> t.getText,
"hashtags" -> t.getHashtagEntities.map(_.getText),
"retweet" -> t.getRetweetCount,
"language" -> t.getLang.toString(),
"sentiment" -> detectSentiment(t.getText).toString
)
}).saveAsTextFile("output.txt")

如果我不必附加每条推文的情绪,我可以将其直接存储为Json(下面的代码)。
   englishtweets.foreachRDD{(rdd, time) =>
rdd.saveAsTextFile("output")}

最佳答案

当我们发现您的数据需求时,需要先通过RDD进行数据清理或数据转换,然后再将其加载到Hive表中。

stackdata = sc.textFile("/user/<filepath>/stackdata.txt")

使用“映射”转换映射数据
stackmap =stackdata.map(lambda oi:(oi.split(",")[0],oi.split(",")[1],oi.split(",")[2],oi.split(",")[3],oi.split(",")[4],oi.split(",")[5],oi.split(",")[6],oi.split(",")[7],))

上一步的输出:(u'p(retweet-> 0',u'location-> None',u'sentiment-> NEUTRAL',u“text->这是类加罗尔另一个保存完好的 secret 。看看吧!想分享这座城市的 secret 吗?将它们发送给我们,我们\ u2026“,u'语言-> en',u'created_at-> 1528369782000',u'用户-> BangaloreTimes1',u'主题标签-> [Ljava.lang .String; @ 6acc7cc)')

再次,我们正在重新应用map函数进行更多转换
stackremap = stackmap.map(lambda oi:((oi[0].split("->")[0],oi[0].split("->")[1]),(oi[1].split("->")[0],oi[1].split("->")[1]),(oi[2].split("->")[0],oi[2].split("->")[1]),(oi[3].split("->")[0],oi[3].split("->")[1]),(oi[4].split("->")[0],oi[4].split("->")[1]),(oi[5].split("->")[0],oi[5].split("->")[1]),(oi[6].split("->")[0],oi[6].split("->")[1]),(oi[7].split("->")[0],oi[7].split("->")[1])))

以上步骤的输出:(((u'p(retweet',u'0'),(u'location',u'None'),(u'sentiment',u'NEUTRAL'),(u'text', u“这是类加罗尔(Bengaluru)另一个保存最完好的 secret 。要检查一下!想分享这座城市的 secret 吗?将它们发送给我们,我们会\\ u2026”),(u'语言',u'en'),(u'created_at' ,u'1528369782000'),(u'用户',u'BangaloreTimes1'),(u'hashtags',u'[Ljava.lang.String; @ 6acc7cc)'))

最后一步
stackfinal = stackremap.map(lambda oi:(oi[0][1],oi[1][1],oi[2][1],oi[3][1],oi[4][1],oi[5][1],oi[6][1],oi[7][1]))

您将获得以逗号分隔格式的结果输出。

最终输出:(u'0',u'None',u'NEUTRAL',u“这是类加罗尔另一个保存最完好的 secret 。请检查一下!想分享这座城市的 secret ?将其发送出去,我们将发送给我们,\ w2026” ,u'en',u'1528369782000',u'BangaloreTimes1',u'[Ljava.lang.String; @ 6acc7cc)')

现在,您可以将数据加载到表中。

注意:我们转换后的结果数据集是字符串,执行Hive操作时,需要将其转换为所需的数据类型。

hive 表供引用
create table tweetdata(retweet varchar(20),location int,sentiment varchar(20),text varchar(20),language varchar(20),createdat varchar(20),user varchar(20),hashtags varchar(20))row format delimited fields terminated by ',' stored as textfile;

关于hadoop - 从包含以Map形式的数据的文件中创建配置单元表(转推-> 0,loc->无),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com