如何从表单中包含数据的文件创建配置单元表
Map(retweet -> 0,location -> None,sentiment -> kept,text -> )这里是孟加卢市另一个保存得最好的秘密。看看吧!想分享这座城市的秘密吗?把他们送进来,我们就用…了。,language -> en,created_at -> 1528369782000,user -> BangaloreTimes1,hashtags -> [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")}发布于 2018-06-08 23:37:44
当我们发现您的数据需要,在您将其加载到Hive表之前,需要通过RDD进行数据清理或数据转换。
stackdata = sc.textFile("/user/<filepath>/stackdata.txt")使用' Map‘转换映射数据
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 -> None‘,u"text -> Here's the - share of Bengaluru.查看!想要分享这座城市的秘密吗?我们w\u2026",u’language -> en',u‘created_at -> 1528369782000',u’user -> BangaloreTimes1',u‘hashtags -> [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‘中立’),(u‘’text ',u“这里是Bengaluru的另一个最好的秘密。看看吧!想分享这座城市的秘密吗?发送它们,我们w\u2026"),(u‘语言',u’en'),(u‘created_at ',u’1528369782000'),(u‘用户',u’BangaloreTimes1'),(u‘hashtag ',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‘中立’,u“这是另一个保存最好的班加罗鲁秘密。看看吧!想分享这座城市的秘密吗?发送他们,我们w\u2026",u‘en',u’1528369782000',u‘班加罗雷时间1’,u‘[Ljava.lang.String;@6acc7cc]’)
现在,您可以将数据加载到表中。
注释:我们转换的结果数据集是字符串,在执行配置单元操作时,我们需要将其转换为所需的数据类型。
可供参考的配置单元表
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;https://stackoverflow.com/questions/50757420
复制相似问题