首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从包含表单映射中数据的文件创建配置单元表格(retweet -> 0,loc -> none)

从包含表单映射中数据的文件创建配置单元表格(retweet -> 0,loc -> none)
EN

Stack Overflow用户
提问于 2018-06-08 17:24:17
回答 1查看 37关注 0票数 0

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

Map(retweet -> 0,location -> None,sentiment -> kept,text -> )这里是孟加卢市另一个保存得最好的秘密。看看吧!想分享这座城市的秘密吗?把他们送进来,我们就用…了。,language -> en,created_at -> 1528369782000,user -> BangaloreTimes1,hashtags -> [Ljava.lang.String;@6acc78cc]

下面的代码是生成o/p。

代码语言:javascript
运行
复制
      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 (下面的代码)。

代码语言:javascript
运行
复制
   englishtweets.foreachRDD{(rdd, time) =>
   rdd.saveAsTextFile("output")}
EN

回答 1

Stack Overflow用户

发布于 2018-06-08 23:37:44

当我们发现您的数据需要,在您将其加载到Hive表之前,需要通过RDD进行数据清理或数据转换。

代码语言:javascript
运行
复制
stackdata = sc.textFile("/user/<filepath>/stackdata.txt")

使用' Map‘转换映射数据

代码语言:javascript
运行
复制
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函数进行更多的变换

代码语言:javascript
运行
复制
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)‘)

最后一步,

代码语言:javascript
运行
复制
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]’)

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

注释:我们转换的结果数据集是字符串,在执行配置单元操作时,我们需要将其转换为所需的数据类型。

可供参考的配置单元表

代码语言:javascript
运行
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50757420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档