Apache Spark

Nebula Exchange 工具 Hive 数据导入的踩坑之旅

不羁的心 提交于 2021-01-11 15:56:31
摘要:本文由社区用户 xrfinbj 贡献,主要介绍 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 的流程及相关的注意事项。 1 背景 公司内部有使用图数据库的场景,内部通过技术选型确定了 Nebula Graph 图数据库,还需要验证 Nebula Graph 数据库在实际业务场景下的查询性能。所以急迫的需要导入数据到 Nebula Graph 并验证。在这个过程中发现通过 Exchange 工具从 hive 数仓导入数据到 Nebula Graph 文档不是很全,所以把这个流程中踩到的坑记录下来,回馈社区,避免后人走弯路。 本文主要基于我之前发在论坛的 2 篇帖子: exchange 如何导入 hive 数据问题 exchange 执行从 hive 导入数据报错 2 环境信息 Nebula Graph 版本:nebula:nightly 部署方式(分布式 / 单机 / Docker / DBaaS):Mac 电脑 Docker 部署 硬件信息 磁盘(SSD / HDD):Mac 电脑 SSD CPU、内存信息:16 G 数仓环境(Mac 电脑搭建的本地数仓): Hive 3.1.2 Hadoop 3.2.1 Exchange 工具: https://github.com/vesoft-inc/nebula-java/tree/v1.0/tools

2021年最新版大数据面试题全面总结-持续更新

南楼画角 提交于 2021-01-10 13:09:43
更新内容和时间表 大数据基础篇 Part0:Java基础篇 Part1:Java高级篇 Part2:Java之JVM篇 Part3:NIO和Netty篇 Part4:分布式理论篇 框架篇 Part5:Hadoop之MapReduce Part6:Hadoop之HDFS Part7:Hadoop之Yarn Part8:Hadoop之Zookeeper Part9:Hadoop之Hive Part10:Hadoop之Hbase Part11:Hadoop之Kafka Part12:Hadoop之其他消息队列 Part13:Hadoop之Spark Part14:Hadoop之Flink 算法篇 大数据算法面试题 目前已经有面试系列 总纲 大数据方向学习面试知识图谱 Flink Flink面试题通关手册 全网第一 | Flink学习面试灵魂40问答案 Spark 独孤九剑-Spark面试80连击(上) 独孤九剑-Spark面试80连击(下) 企业面试题 如果你在准备面试,好好看看这130道题 面试题总结PDF版 可以关注公众号,回复【JAVAPDF】,领取这份面试题PDF版本! 欢迎关注, 《大数据成神之路》 系列文章 欢迎关注, 《大数据成神之路》 系列文章 欢迎关注, 《大数据成神之路》 系列文章 来源: oschina 链接: https://my.oschina.net

java和python的比较

夙愿已清 提交于 2021-01-10 08:50:37
  1.   在实际运用的python入门简略,但要学会用python干活,需求再学习python各种库,pyhton的强壮在于库,为什么python的库强壮,原因是python的库能够用python,c言语,c++等规划,再提供给python运用,所以无论gpu运转,神经网络,智能算法,数据剖析,图像处理,科学核算,林林总总的库在等着你用。而java没有python那么多的开源库,很多库是商业公司内部运用,或发布出来只是一个jar包,看不到原始代码。python虚拟机由于编译性没有java的支撑的好(或者说成心这么规划的),一般直接运用源码(linux),或源码简略打个包(如pyexe)。   2.   python用处最多的是脚本,java用处最多的是web,pyhotn是胶水,能够把各类不相关的东西粘在一重用,java是基佬,能够经过软件工程组成几百个人的团队和你pk,商业化气息重。不过我以为仍是python强壮,由于能够便利调用c或c++的库,但软件工程和商业化运作没有java好,合适快捷开发。   3.   假如你想写程序卖软件用java,可用上ibm服务器,上oracle数据库,上EMC存储,价格高,商业采购公司喜欢这种高大上。假如你要直接用程序生成金钱用python,python能够实现宽客金融,数据回测,炒股,炒期权,炒黄金,炒比特币,对冲套利,统计套利

spark集群搭建(spark版本2.3.2)

心不动则不痛 提交于 2021-01-10 07:48:42
1.前置软件:   JDK1.8 2.修改配置文件: cp slaves.template slaves vi slaves   添加从节点:     slave1     slave2 cp spark-env.sh.template spark-env.sh vi spark-env.sh   添加环境变量:     export SPARK_MASTER_HOST=master     export SPARK_MASTER_PORT=7077     export SPARK_WORKER_CORES=2     export SPARK_WORKER_MEMORY=3g     export JAVA_HOME=/opt/module/jdk1.8.0_171 3.基于yarn 提交任务有可能报错虚拟内存不足 在每台节点中的yarn-site.xml中配值关闭虚拟内存检查 <property>   <name>yarn.nodemanager.vmem-check-enabled</name>   <value>false</value> </property> 4.Standalone 提交命令: ./bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples

RDD的五大特点

让人想犯罪 __ 提交于 2021-01-08 20:15:48
1.RDD的官网定义 A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable,partitioned collection of elements that can be operated on in parallel. 翻译: 弹性分布式数据集(RDD),Spark中的基本抽象。表示不可变的,分区的可以并行操作的元素集合。 解释: RDD是Resilient Distributed Dataset(弹性分布式数据集)的简称。RDD的弹性体现在计算方面,当Spark进行计算时,某一阶段出现数据丢失或者故障,可以通过RDD的血缘关系就行修复。 1、内存的弹性:内存与磁盘的自动切换 2、容错的弹性:数据丢失可以自动恢复 3、计算的弹性:计算出错重试机制 4、分片的弹性:根据需要重新分片 RDD是不可变(immutable)的,一旦创建就不可改变。RDDA-->RDDB,RDDA经过转换操作变成RDDB,这两个RDD具有血缘关系,但是是两个不同的RDD,体现了RDD一旦创建就不可变的性质。 RDD源码 abstract class RDD [ T: ClassTag ] ( @transient private var _sc: SparkContext,

【spark系列9】spark 的动态分区裁剪上(Dynamic partition pruning)-逻辑计划

ⅰ亾dé卋堺 提交于 2021-01-08 16:47:12
背景 本文基于delta 0.7.0 spark 3.0.1 spark 3.x引入了动态分区裁剪,今天我们分析以下代码是怎么实现的 分析 直接定位到 PartitionPruning.apply PartitionPruning是逻辑计划的规则 override def apply(plan: LogicalPlan): LogicalPlan = plan match { // Do not rewrite subqueries. case s: Subquery if s.correlated => plan case _ if !SQLConf.get.dynamicPartitionPruningEnabled => plan case _ => prune(plan) } 当是该逻辑计划是子查询且该子查询是相关的,则直接跳过,因为相关的子查询将会被重写到join条件中 如果没有开启动态分区,则直接跳过 其他条件则会跳到下一步 下一步的条件,则是会判断是否是包含join操作,如果是join操作才会进行后续的操作: private def prune(plan: LogicalPlan): LogicalPlan = { plan transformUp { // skip this rule if there's already a DPP subquery on the

Apache Hudi 介绍与应用

百般思念 提交于 2021-01-08 07:52:32
Apache Hudi Apache Hudi 在基于 HDFS/S3 数据存储之上,提供了两种流原语: 插入更新 增量拉取 一般来说,我们会将大量数据存储到HDFS/S3,新数据增量写入,而旧数据鲜有改动,特别是在经过数据清洗,放入数据仓库的场景。而且在数据仓库如 hive中,对于update的支持非常有限,计算昂贵。另一方面,若是有仅对某段时间内新增数据进行分析的场景,则hive、presto、hbase等也未提供原生方式,而是需要根据时间戳进行过滤分析。 在此需求下,Hudi可以提供这两种需求的实现。第一个是对record级别的更新,另一个是仅对增量数据的查询。且Hudi提供了对Hive、presto、Spark的支持,可以直接使用这些组件对Hudi管理的数据进行查询。 存储类型 我们看一下 Hudi 的两种存储类型: 写时复制(copy on write):仅使用列式文件(parquet)存储数据。在写入/更新数据时,直接同步合并原文件,生成新版本的基文件(需要重写整个列数据文件,即使只有一个字节的新数据被提交)。此存储类型下,写入数据非常昂贵,而读取的成本没有增加,所以适合频繁读的工作负载,因为数据集的最新版本在列式文件中始终可用,以进行高效的查询。 读时合并(merge on read):使用列式(parquet)与行式(avro)文件组合,进行数据存储。在更新记录时

hadoop生态系列

你离开我真会死。 提交于 2021-01-07 05:55:09
1、 hadoop高可用安装和原理详解 2、 hadoop2.7+spark2.2+zookeeper3.4.简单安装 3、 windows下通过idea连接hadoop和spark集群 4、 hadoop2.7之作业提交详解(上) 5、 hadoop2.7之作业提交详解(下) 6、 hadoop2.7作业提交详解之文件分片 7、 hadoop之hdfs命令详解 8、 hadoop之hdfs架构详解 9、 hadoop之mapreduce详解(基础篇) 10、 hadoop之mapreduce详解(进阶篇) 11、 hadoop之mapreduce详解(优化篇) 12、 hadoop之yarn详解(基础架构篇) 13、 hadoop之yarn详解(命令篇) 14、 hadoop之yarn详解(框架进阶篇) 来源: oschina 链接: https://my.oschina.net/u/4387530/blog/3390616

clickhouse数据模型之留存分析

。_饼干妹妹 提交于 2021-01-06 06:17:21
本文经作者授权,独家转载: 作者主页:https://www.jianshu.com/u/8f36a5e63d18 什么是留存,比如在20200701这天操作了“点击banner”的用户有100个,这部分用户在20200702这天操作了“点击app签到”的有20个,那么对于分析时间是20200701,且“点击banner”的用户在次日“点击app签到”的留存率是20%。 背景 关于用户留存模型是各大商业数据分析平台必不可少的功能,企业一般用该模型衡量用户的活跃情况,也是能直接反应产品功能价值的直接指标;如,boss想要了解商城改版后,对用户加购以及后续下单情况的影响等。如下图,这就是一个典型的留存分析功能: 问题 通常实现上述需求的传统做法是多表关联,了解clickhouse的攻城狮都清楚,多表关联简直就是clickhouse的天敌;如一张用户行为日志表中至少包含:用户id、行为事件、操作时间、地点属性等,想分析20200909日河南省注册用户次日的下单情况,那么SQL一般会这么写: select count(distinct t1.uid) r1, count(distinct t2.uid) r2 from( select uid from action_log where day='20200909' and action='login' and province='河南省'

java.lang.NoClassDefFoundError: org/apache/spark/Logging

时间秒杀一切 提交于 2021-01-06 01:59:07
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/Logging at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net