前言

由于github老是打不开,转载部分waterdrop常见问题。
原文地址:https://github.com/InterestingLab/waterdrop/issues/267
waterdrop使用文档地址:https://interestinglab.github.io/waterdrop-docs/#/zh-cn/v1/

问题及解决办法

  1. 以集群模式(cluster)运行waterdrop,提示找不到:plugins.tar.gz
    使用cluster模式提交前,需要您先执行如下命令:

    备注: 预计下一个版本发布时,v1.2.3 我们会支持插件目录自动打包,无需再执行此命令。
    tar zcvf plugins.tar.gz plugins

    将插件目录打包后,执行(之后如果您的plugins目录没有添加或删除插件,则不需要再次打包了)

    ./bin/start-waterdrop.sh --master yarn --deploy-mode cluster --config ./config/first.conf

  2. Waterdrop启动后报错如下:

    ANTLR Runtime version 4.7 used for parser compilation does not match the current runtime version 4.5.3ANTLR Runtime version 4.7 used for parser compilation does not match the current runtime version 4.5.3

    你的问题是jar包依赖冲突了,可以下载一下最新版本试试,应该没事了:

    https://github.com/InterestingLab/waterdrop/releases/download/v1.2.3/waterdrop-1.2.3.zip

  3. Waterdrop 是否支持动态的变量替换,比如我想在定时任务中替换sql中的where条件?

    没问题,都支持,具体配置例子,请见 用${varname} 做变量替换的配置示例。

  4. Waterdrop 中如何在配置中指定变量,之后在运行时,动态指定变量的值?

    Waterdrop 从v1.2.4开始,支持在配置中指定变量,此功能常用于做定时或非定时的离线处理时,替换时间、日期等变量,用法如下:

    在配置中,配置变量名称,比如:

    ...filter {sql {table_name = "user_view"sql = "select * from user_view where city ='"${city}"' and dt = '"${date}"'"}
    }
    ...
    这里只是以sql filter举例,实际上,配置文件中任意位置的key = value中的value,都可以使用变量替换功能。
    

    详细配置示例,请见variable substitution

    启动命令如下:

        # local  模式
    ./bin/start-waterdrop.sh -c ./config/your_app.conf -e client -m local[2] -i city=shanghai -i date=20190319# yarn client 模式
    ./bin/start-waterdrop.sh -c ./config/your_app.conf -e client -m yarn -i city=shanghai -i date=20190319# yarn cluster 模式
    ./bin/start-waterdrop.sh -c ./config/your_app.conf -e cluster -m yarn -i city=shanghai -i date=20190319# mesos, spark standalone  启动方式相同。
    

    可以用参数 -i 或者 --variable 后面指定 key=value来指定变量的值,其中key 需要与配置中的变量名相同。

  5. Waterdrop消费Kafka出现OOM怎么解决?

    多数情况,OOM是由消费没有限速导致的,解决方法如下:

    详见:https://www.processon.com/view/link/5c9862ece4b0c996d36fe7d7

  6. Exception in thread “main” java.lang.NoSuchFieldError: INSTANCE

    原因是CDH版本Spark自带的 httpclient.jar 版本较低,而ClickHouse JDBC基于的httpclient版本为4.5.2,包版本冲突。解决方法是用 httpclient-4.5.2 版本替换掉 CDH 自带的jar包

  7. 我的Spark集群的默认jdk是java7,我安装了java8之后,如何指定让waterdrop使用java启动:

    在waterdrop的config 文件中,指定如下配置:

    spark {...spark.executorEnv.JAVA_HOME="/your/java_8_home/directory"spark.yarn.appMasterEnv.JAVA_HOME="/your/java_8_home/directory"...
    }
    
  8. waterdrop配置多个数据源, 比如在input里面同时配置es和hdfs, 有这种多数据源的案例吗?

    多数据源举例如下:

    spark {...
    }input {hdfs { ... }    elasticsearch { ... }mysql {...}
    }filter {sql {sql = """select .... from hdfs_table join es_table on hdfs_table.uid = es_table.uid where ..."""}
    }output {elasticsearch { ... }
    }
    
  9. 多行文本如何实现

    当你有一个配置,文本非常长,希望能够换行时,可以使用三个双引号来表示

    var = """whatever you want
    """
    
  10. 多行文本如何实现变量替换

但是当你想在多行文本中做变量替换时,就会麻烦一点,因为变量不能包括在三个双引号之内。
```bash
var = """
your string 1
"""${you_var}""" your string 2"""```
  1. Waterdrop 写 ClickHouse 多个实例如何实现负载均衡?
    1)直接写分布式表(不推荐)
    2)通过在ClickHouse多个实例前新增代理或者域名(DNS)

    {output {clickhouse {host = "ck-proxy.xx.xx:8123"# 本地表table = "table_name"}}
    }
    

    3)在配置里面配置多个实例

    {output {clickhouse {host = "ck1:8123,ck2:8123,ck3:8123"# 本地表table = "table_name"}}
    }
    

    4)使用 cluster 模式

    {output {clickhouse {# 仅配置一个host = "ck1:8123"cluster = "clickhouse_cluster_name"# 本地表table = "table_name"}}
    }
    
  2. Spark local[*] 模式下跑Waterdrop,总是出现OOM,怎么办?

    如果用local模式跑的话,需要修改一下start-waterdrop.sh的脚本,在spark-submit后面,增加一个参数 --driver-memory 4g 这样的。一般情况下,我们生产环境,不用local 模式,所以这个参数在On Yarn时,一般不需要设置。
    详见 : https://spark.apache.org/docs/latest/configuration.html#application-properties

  3. 自己编写的插件或者是第三方的jdbc.jar放在哪里可以被 Waterdrop 加载?

    将 Jar 包,放置在 plugins 目录指定结构下,如下

    cd waterdrop
    mkdir -p plugins/my_plugins/lib
    cp third-part.jar plugins/my_plugins/lib
    
  4. 如何用Waterdrop把数据写入Hive?

    spark {spark.sql.catalogImplementation = "hive"// 如果需要写入hive时设置hive.exec.dynamic.partition、hive.exec.dynamic.partition.mode这两个参数,可以在这里设置,前面记得加spark.hadoopspark.hadoop.hive.exec.dynamic.partition = "true"spark.hadoop.hive.exec.dynamic.partition.mode = "nonstrict"
    }filter {sql = "insert into ..."
    }output {// 数据已经通过sql filter写入hive了,这里只是占位,实际上不起作用。stdout {limit = 1}
    }
    
  5. 写入ClickHouse 报错: ClassCastException

    在Waterdrop里面不会主动对数据类型进行转,在Input读取数据之后,生成对应的Schema。而在写入ClickHouse的时候,需要字段类型严格匹配,不匹配的需要进行数据转换,数据转换可以通过以下2种插件实现:

    Filter Convert插件
    Filter Sql插件

  6. Waterdrop v1 的编译打包工具是sbt,下载依赖非常慢怎么办?

    有办法,参照下面的去做,优先使用国内镜像,会快很多,以Mac + IDEA系统的配置方法为例子。

    第一步:在~/.sbt目录下创建repositories文件,内容如下:

    [repositories]
    local
    nexus-aliyun:https://maven.aliyun.com/nexus/content/groups/public
    huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
    typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
    ivy-sbt-plugin:https://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
    sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
    sonatype-oss-releases
    maven-central
    sonatype-oss-snapshots
    

    第二步:在 IDEA 设置中搜索sbt,然后修改VM parameters,填入以下内容:

    -Dsbt.override.build.repos=true
    -Dsbt.repository.config=${改成你的用户目录}\.sbt\repositories
    

Waterdrop FAQ/常见问题相关推荐

  1. 微信攻城三国怎么找服务器,攻城三国怎么玩 新手FAQ常见问题答案汇总[图]

    类型:策略卡牌 大小:269MB 评分:5.0 平台: 攻城三国怎么玩?很多小伙伴是第一次玩这种类型的游戏,下面友情小编为大家带来新手FAQ的常见问题答案汇总,看看能不能帮到大家哦~ 新手FAQ常见问 ...

  2. faq常见问题 html模板,新手FAQ(常见问题答疑)

    原标题:新手FAQ(常见问题答疑) 温馨提示 1.手机版玩家要记得[绑定手机账号]哟,这样当出现因卸载游戏等操作或游戏错误导致的账号丢数据丢失时,可以利用手机号码找回账号,此外没有其他手段找回被删除的 ...

  3. 阿里云DataHub常见问题

    FAQ常见问题 1. 访问DataHub服务的域名是什么 地区Region外网Endpoint经典网络ECS Endpoint(金融云)VPC ECS Endpoint华东1(杭州)dh-cn-han ...

  4. 不懂FAQ页面怎么设计?一些产品FAQ页面模板展示!

    "FAQ"这个关键词可能很多人都听说过,但是如果不是行业内的人,恐怕很难理解它的含义. 什么是FAQ? FAQ是英语 Frequently Asked Questions的缩写.中 ...

  5. README 规范和项目文档规范

    1. README 规范 我们直接通过一个 README 模板,来看一下 README 规范中的内容: # 项目名称<!-- 写一段简短的话描述项目 -->## 功能特性<!-- 描 ...

  6. vector机器人 UPDATING YOUR VECTOR ACCOUNT 更新你的 VECTOR 帐户

    目录 Sections: 部分: Creating an account 创建一个帐户 Email address requirements 电邮地址要求 Username requirements ...

  7. vector机器人 PHOTOS TAKEN BY VECTOR 由 VECTOR 拍摄的照片

    目录 How to take a photo 如何拍照 View and export pictures taken by Vector 查看和导出由 Vector 拍摄的图片 The world t ...

  8. vector机器人 WHAT DO I USE THE VECTOR APP FOR? 我使用 VECTOR 应用程序做什么?

    目录 Sections: 部分: Learn about features and how to use them 了解特性以及如何使用它们 Meet Vector again and again 一 ...

  9. Rose Study

    公司大量使用Rose框架支持线上业务,不仅仅是它的实用性和方便的特点吸引你去学习,更是它优雅的设计. 但是,由于是开源的框架,所以,资料和示例程序都是有限的,这一篇陈臻老师的作品简单的介绍了Rose的 ...

最新文章

  1. AJAX解惑篇(转)
  2. a标签无跳转的死链接
  3. sql语句之查询操作
  4. 力克“中国智造”之道,亮相第七届工业数字化论坛
  5. 计算机与科学的论文,计算机与科学技术论文要求.doc
  6. Android与Windows Socket通信,TLS双向认证
  7. Copy-on-Write模式:写时复制
  8. gogo/protobuf proto.GoGoProtoPackageIsVersion2、proto3 版本 不一致
  9. python中的开根、取整、求对数
  10. 【Red Team——基础】通过钓鱼攻击获得访问权限
  11. 由读写经济学文章所想到的
  12. 里氏代换原则、依赖倒转原则
  13. 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】...
  14. python-介绍泊松分布(poisson分布)
  15. unity【KeyCode 键码】查询表
  16. 【java初学】面向对象了解
  17. WLAN基本知识之无线基本概念
  18. 超神学院德诺计算机,超神学院:扒一扒隐藏起来的人物,德诺星系的人有没有活下来的?...
  19. Unseen Westeros:权力的游戏展览
  20. Office2010:为什么我的PPT需要修复?

热门文章

  1. 一本通 1267:【例9.11】01背包问题
  2. 2023短剧小程序分销cps系统搭建,教你上线自己的短剧平台
  3. Python实现的拍拍贷金融风控模型
  4. 马斯克用 26 天重置 Twitter:裁了近八成工程师、整顿系统架构!
  5. ChatGPT强势加入芯片设计!不用学专业硬件描述语言了,说人话就行
  6. linux同时安装多个rpm文件,linux系统同时安装多个rpm包技巧
  7. 我的世界电脑java版服务器,《我的世界》中国版PC Java版不限号 Hypixel闪电饥饿游戏...
  8. 在html里文本框怎么设置背景颜色,css文本框颜色怎么设置
  9. outlook自动下载附件
  10. 天大计算机本校保研面试,保研记 | 关于用15天完成保研这件事