tonglin0325的个人主页

Flink学习笔记——读写Hbase

1.如果是csa(Cloudera Streaming Analytics)版本的Hbase,可以参考Cloudera官方例子,通过引入flink-hbase来实现

1
2
3
4
5
6
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-hbase_2.11</artifactId>
<version>1.9.0-csa1.0.0.0</version>
</dependency>

要求flink最低版本1.9.0,hbase最低版本2.1.0-cdh6.3.0,然后就可以使用HBaseSinkFunction来写Hbase

1
2
https://docs.cloudera.com/csa/1.2.0/datastream-connectors/topics/csa-hbase-configuration.html

全文 >>

Hive学习笔记——metastore listener

除了使用hive hook来记录hive上用户的操作之外,还可以使用hive metastore listener来进行记录,参考:

1
2
https://towardsdatascience.com/apache-hive-hooks-and-metastore-listeners-a-tale-of-your-metadata-903b751ee99f

hive metastore的接口有3种,分别是

全文 >>

mac下安装gradle7.3

gradle和maven类似,是一个构建工具

gradle安装和配置

1.mac安装gradle

1
2
brew install gradle

或者下载gradle的二进制安装包

1
2
https://gradle.org/releases/

然后在~/.bash_profile中配置

1
2
3
4
# gradle
export GRADLE_HOME=/Users/lintong/software/gradle-7.3
export PATH=$GRADLE_HOME/bin:$PATH

2.查看是否安装成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
gradle -v

------------------------------------------------------------
Gradle 7.3
------------------------------------------------------------

Build time: 2021-11-09 20:40:36 UTC
Revision: 96754b8c44399658178a768ac764d727c2addb37

Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 1.8.0_211 (Oracle Corporation 25.211-b12)
OS: Mac OS X 10.16 x86_64

使用gradle后,老版本的IDEA 2017.1 对gradle的支持较弱,建议升级到新版本 2021.1

如果需要添加 gradle.properties 配置文件,请放在 $GRADLE_HOME 目录

1
2
3
➜  /Users/lintong/software/gradle-7.3.2 $ ls | grep gradle.properties
gradle.properties

配置文件内容

1
2
3
4
5
/Users/lintong/software/gradle-7.3.2 $ cat gradle.properties
username=xx
password=xx
mavenUser=xx
mavenPassword=xx

gradle处理依赖冲突

使用gradle的时候如果遇到依赖冲突,可以添加如下配置,添加后再编译就能使得有冲突的时候自动失败

1
2
3
4
5
6
configurations.all {
resolutionStrategy {
failOnVersionConflict()
}
}

全文 >>

Spark学习笔记——读写ScyllaDB

Scylla兼容cassandra API,所以可以使用spark读写cassandra的方法来进行读写

1.查看scyllaDB对应的cassandra版本

1
2
3
cqlsh:my_db> SHOW VERSION
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]

2.查看spark和cassandra对应的版本

参考:https://github.com/datastax/spark-cassandra-connector

3.写scyllaDB

dataset API写scyllaDB

1
2
3
4
5
6
ds2.write
.mode("append")
.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> "my_tb", "keyspace" -> "my_db", "output.consistency.level" -> "ALL", "ttl" -> "8640000"))
.save()

RDD API写scyllaDB

1
2
3
4
5
import com.datastax.oss.driver.api.core.ConsistencyLevel
import com.datastax.spark.connector._

ds.rdd.saveToCassandra("my_db", "my_tb", writeConf = WriteConf(ttl = TTLOption.constant(8640000), consistencyLevel = ConsistencyLevel.ALL))

注意字段的数量和顺序需要和ScyllaDB表的顺序一致,可以使用下面方式select字段

1
2
3
4
5
6
7
8
9
10
11
val columns = Seq[String](
"a",
"b",
"c")
val colNames = columns.map(name => col(name))
val colRefs = columns.map(name => toNamedColumnRef(name))

val df2 = df.select(colNames: _*)
df2.rdd
.saveToCassandra(ks, table, SomeColumns(colRefs: _*), writeConf = WriteConf(ttl = TTLOption.constant(8640000), consistencyLevel = ConsistencyLevel.ALL))

不过官方推荐使用DataFrame API,而不是RDD API

If you have the option we recommend using

全文 >>

DataGrip2017.1连接Hive

在使用低版本的DataGrip的时候,还没有hive的data source,需要自行添加数据源

1.下载hive driver,如果你使用的EMR的大数据集群的话,下载地址

1
2
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/HiveJDBCDriver.html

全文 >>

Kafka学习笔记——Consumer API

参考kafka官方文档,版本1.0.x

1
2
http://kafka.apache.org/10/documentation.html#consumerapi

依赖,选择 Cloudera Rel 中的 1.0.1-kafka-3.1.0

1
2
3
4
5
6
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>1.0.1-kafka-3.1.0</version>
</dependency>

Kafka的消费者有2套API,一个是新版的Java API,在 org.apache.kafka.clients 包中

1
2
http://kafka.apache.org/10/documentation.html#newconsumerconfigs

一个是旧版的Scala API,在 kafka.consumer 包中

1
2
http://kafka.apache.org/10/documentation.html#oldconsumerconfigs

其中new consumer api中文含义参考

1
2
https://tonglin0325.github.io/xml/kafka/1.0.1-kafka-3.1.0/new-consumer-api.xml

  

kafka consumer参数调优:kafka consumer 参数调优

全文 >>

Redis学习笔记——应用场景

参考

1
2
3
Redis经典案例场景
https://zhuanlan.zhihu.com/p/146082021

1.最近浏览功能

使用redis的list和zset都可以实现

list实现参考

1
2
3
使用 Redis 缓存来实现用户最近浏览的商品列表
https://www.cnblogs.com/leizzige/p/12354527.html

zset实现

1
2
3
如何实现类似知乎的功能查看最近1000条记录呢
https://wangsrbus.cn/archives/blog-historyhtml

全文 >>

ElasticSearch学习笔记——插件开发

参考

1
2
3
4
5
6
https://dzone.com/articles/elasticsearch5-how-to-build-a-plugin-and-add-a-lis
https://github.com/chrisshayan/es-changes-feed-plugin
https://blog.csdn.net/qq_16164711/article/details/87872383
https://blog.gaiaproject.club/es-develop-plugin/
https://blog.51cto.com/13755625/2117995

Es的插件主要有如下几种类型,参考

1
2
https://github.com/elastic/elasticsearch/tree/master/server/src/main/java/org/elasticsearch/plugins

全文 >>