暂无个人介绍
暂时未有相关通用技术能力~
阿里云技能认证
详细说明1、可以使用phoenix,支持做过滤后小数据量(千万级别)的分析 2、把hbase数据导出到parquet,然后可以使用spark、hive等
hbase宽表模式,如果数据是k ,v,v,v方式可以使用hbase mongo主要支持json,如果原始数据就是json,建议mongo
两者可以混用 1、spark sql性能好一些 2、hive sql更加稳定 3、spark sql操作hive分区表比较原生 4、saprk sql操作hive的分桶表麻烦一些
可以使用单例模式,同时可以使用broadcast方式把变量broadcast出去,具体可以参考: https://github.com/aliyun/aliyun-apsaradb-hbase-demo/blob/master/spark/sparkstreaming/src/main/scala/com/aliyun/spark/SparkStreamingOnKafka010ToHBasePerformance.scala
hive 直接读取hbase,因为hbase是行存分析性能差,建议把hbase的数据导出到parquet,然后分析
1、spark本身不支持创建索引,不过有基于spark的社区项目支持给spark的表创建二级索引 https://github.com/Intel-bigdata/OAP 2、针对即系场景的加速,可以使用spark的cache技术
如果有补发历史事件的数据,只能够把两天的数据存储在不同的事件分区中,然后每天对历史的分区做全量的merge。或者使用hudi这种支持upsert的存储格式代替parquet格式
spark steaming处理过程中关联hbase中的维表是非常常见的开发模式。通过rowkey去查询hbase性能能在100ms内,而且随着数据量增加,hbase集群扩容即可
如果项目时间不是那么紧,建议可以直接使用scala,一方面会java再学习scala会很快。另外社区的scala的资料更多,而且spark本身scala研发的,scala熟悉后能够更好的理解和学习spark内核
1、hbase本身是行存,比较适合简单查询的高效率和并发 2、对于想要做实时分析,建议把hbase的数据归档到parquet,或者kudu然后使用impala
建议使用变成的方式注册临时表,这样更易管理
这总一般是编码的问题,如果dla分析中文csv有乱码,可以参考,设置“serialization.encoding”参数 https://help.aliyun.com/document_detail/109657.html?spm=a2c4g.11186623.6.625.1fdda1c0h8VhLv
这种一般可能是内存泄漏,建议在作业慢的时候,看下spark ui的executor里面看下堆栈,同时看下executor的gc信息
建议考研,一方面考研找到大数据相关的实验室,实验室的项目会有一定的实际业务场景,这样带着问题来学习使用大数据组件能够更加深入。同时研究生阶段可以多读一些大数据相关的论文,开阔视野
1、如果需要做预计算火写入,可以写一个spark streaming作业消费,写入到hdfs 2、也可以使用kafka 的connect sink到hdfs 3、也可以自己写java程序写到hdfs
如果是物理机及本地盘建议3副本,如果是云盘可以考虑2副本,因为云盘本身有容灾保证
目前hadoop社区有一套bulkload到hbase的工具,原理是使用mr或者spark并行的生成hfile存储在hdfs,然后调用hbase的bulkload直接把这些hfile加载到hbase表。代码参考:
val hConf = HBaseConfiguration.create()
hConf.addResource("hbase-site.xml")
val hTableName = "test_log"
hConf.set("hbase.mapreduce.hfileoutputformat.table.name", hTableName)
val tableName = TableName.valueOf(hTableName)
val conn = ConnectionFactory.createConnection(hConf)
val table = conn.getTable(tableName)
val regionLocator = conn.getRegionLocator(tableName)
val hFileOutput = "/tmp/h_file"
output.saveAsNewAPIHadoopFile(hFileOutput,
classOf[ImmutableBytesWritable],
classOf[KeyValue],
classOf[HFileOutputFormat2],
hConf
)
val bulkLoader = new LoadIncrementalHFiles(hConf)
bulkLoader.doBulkLoad(new Path(hFileOutput), conn.getAdmin, table, regionLocator)
sc.textFile就会做分片来并发执行,具体可以参考 https://blog.csdn.net/zjwcsdn123/article/details/80489537
可以同时支持,在core-site.xml中配置了不同fs的实现之后,在程序中使用的时候路径的schema使用不同的前缀就可以了,比如oss://pathxx、hdfs://pathxx fs.oss.impl org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem
phoenix关联查询和mysql在同等数据量上差距不大。 同时phoenix本身不适合做大数据量的关联查询,其中一个表在百万级别是可以的