赞
踩
1.安装sqoop要细心,按照说明一步一步来
2.jdbc连接 windows的mysql 失败
只能换成连接linux-node1的mysql,这样就成功了
================================================
不识别mycluster的解决办法,
2.1.是建resource包,粘贴hadoop的4个xml文件,注意文件中hostname,不要写node1…
要写成192.168.58.201的IP信息。另外,resource包要 mark as rescoure file
操作这一步之后,代码中的路径自动会加”hdfs://mycluster/”,如果本地文件的地址,要在本地文件前边加“file:///”即可解决。
2.2.不识别master 有可能是因为namenodeH。那么我读取的时候,可以写成sc.readTestFiel(“hdfs://192.168.58.201:8020/hello.txt”)
2.3. 还有一个解决方案:不需要把4个xml文件粘贴过来。
在window/system32/Drivers/etc/hosts 里面 写上
192.168.58.201 node1 mycluster
192.168.58.202 node2 mycluster
在代码中 写明 hdfs://mycluster 这样就能识别了
以上解决方法 我竟然花了半个晚上
======================================================================
1.数据源–> flume --> kafka —> flume —> hdfs —>hive—>再清洗 hivesql或者代码
2.数据源—> sparkscore清洗---->hdfs—>hive---->代码清洗—>mysql报表
3.数据源–> flume --> kafka —> sparkstreaming---->大数据可视化平台
=======================================================
日志数据源由运维同志定时上传到hdfs,日志数据是增量导入,按天分区;
订单数据源-mysql,申请后公司将开放访问权限,sqoop到我们的集群hive。
订单数据每天这么多你为什么选择全量导入?
解释:是全量导入,还是增量导入,要根据项目的实际应用场景来,比如机器学习的个性化推荐系统,就需要全量数据;每天的订单数据分析,可能就需要增量导入。
维度表,直接在hive中创建即可;或者在mysql中做好表之后,映射到hive中,全量导入,因为不排除维度表中数据会有变化的情况;
===========================================================
读取到数据成为RDD1,通过map(split),filter, 过滤长度不够格的,
多数日志数据是Json 数据或者Json数组
Json数据可以在map算子中 alibaba.fastJson.parse(数据) 得到jsonObject对象,
然后jsonObject.getString(key),把想要的数据拿出来,用\t 拼接成字符串,return 即可
save as hadoopFile()
.saveAsHadoopFile(
// s"
h
d
f
s
c
l
i
e
n
t
l
o
g
p
a
t
h
/
a
l
l
c
l
i
e
n
t
t
a
b
l
e
s
/
{hdfsclientlogpath}/all_client_tables/
hdfsclientlogpath/allclienttables/{logDate}",
// classOf[String],
// classOf[String],
// classOf[PairRDDMultipleTextOutputFormat]
// )
class PairRDDMultipleTextOutputFormat extends MultipleTextOutputFormat[Any, Any]{}
实现MultipleTextOutputFormat的方法即可
上述方法保证了按天写入hdfs系统
另外一种是flume直接导入hdfs,flume的拦截器中能判断数据是否完整,格式是否正确,分类器可以让不同的数据走不同的channel到kafka,最后flume conf中的配置可以直接按天导入hdfs数据。
sparkSession.sql(s"use $hiveDataBase ")
sparkSession.table(“TO_SONG_INFO_D”)
.withColumn(“ALBUM”, udfGetAlbumName(col(“ALBUM”)))
.withColumn(“POST_TIME”,udfGetPostTime(col(“POST_TIME”)))
.withColumn(“SINGER1”, udfGetSingerInfo(col(“SINGER_INFO”),lit(“singer1”),lit(“name”)))
.withColumn(“SINGER1ID”,udfGetSingerInfo(col(“SINGER_INFO”),lit(“singer1”),lit(“id”)))
.withColumn(“SINGER2”, udfGetSingerInfo(col(“SINGER_INFO”),lit(“singer2”),lit(“name”)))
.withColumn(“SINGER2ID”,udfGetSingerInfo(col(“SINGER_INFO”),lit(“singer2”),lit(“id”)))
.withColumn(“AUTH_CO”, udfGetAuthCompany(col(“AUTH_CO”)))
.withColumn(“PRDCT_TYPE”,udfGetPrdctType(col(“PRDCT_TYPE”)))
.createTempView(“TO_SONG_INFO_D”)
withColumn作用是:覆盖之前的值。 字段值通过UDF进行改造了。
将数据保存到hive中去
sparkSession.sql("""""").write.format(“Hive”).mode(SaveMode.Overwrite).saveAsTable(“TW_SONG_BASEINFO_D”)
====================================================================
问题:识别了java 1.7 没有识别1.8
解决方法:
export JAVA_HOME=/usr/local/java1.8.0_181
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
把path写到后面好了 ./ etc/profile。
另外,properties文件 配置内容的时候,千万不要粘贴,不要有空格
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。