数据库实例的创建

创建MySQL实例

部署架构:
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,其中包括:1个 SequoiaSQL-MySQL 数据库实例节点,1个引擎协调节点,1个编目节点与3个数据节点
MySQL 实例简介
MySQL 是一款开源的关系型数据库管理系统,也是目前最流行的关系型数据库管理系统之一,支持标准的 SQL 语言。 SequoiaDB 支持创建 MySQL 实例,完全兼容 MySQL 语法和协议,用户可以使用 SQL 语句访问 SequoiaDB 数据库,完成对数据的增、删、查、改操作以及其他 MySQL 语法操作。

1. 安装 SequoiaSQL-MySQL 实例程序

安装 SequoiaSQL-MySQL 实例程序需要 root 系统用户,程序已经提前放置在 /home/shiyanlou/sequoiadb-3.4 目录。

1)切换至 root 系统用户;

sudo su

Note: 实验环境已经为 shiyanlou 用户配置 sudo 免密权限。
2)进入软件包放置目录;

cd /home/shiyanlou/sequoiadb-3.4

3)设置 SequoiaSQL-MySQL 实例程序权限为可执行;

chmod +x sequoiasql-mysql-3.4-linux_x86_64-installer.run  

4)安装 SequoiaSQL-MySQL 实例;

./sequoiasql-mysql-3.4-linux_x86_64-installer.run --mode text

2. 创建 MySQL 实例

1)切换 sdbadmin 用户;

su - sdbadmin

sdbadmin 用户的密码为 sdbadmin
2)进入 SequoiaSQL-MySQL 实例安装目录;

cd /opt/sequoiasql/mysql

3)创建 myinst 实例;

bin/sdb_sql_ctl addinst myinst -D database/3306/

4)查看实例;

bin/sdb_sql_ctl status

3. 查看配置文件

实例数据目录下的配置文件 auto.cnf,在 [mysqld] 下添加/更改对应配置项。

1)配置文件位置;

ls -l /opt/sequoiasql/mysql/database/3306/auto.cnf

2)查看 auto.cnf 配置文件内容;

cat /opt/sequoiasql/mysql/database/3306/auto.cnf

配置参数有三种修改方式:

  • 使用工具 sdb_sql_ctl 修改配置,配置生效需重新启动 MySQL 服务。例如: bin/sdb_sql_ctl chconf myinst --sdb-auto-partition=OFF
  • 修改实例数据目录下的配置文件 auto.cnf,在 [mysqld] 下添加/更改对应配置项,配置生效需重新启动 MySQL 服务。例如: sequoiadb_auto_partition=OFF
  • 通过 MySQL 命令行修改,配置临时有效,当重启MySQL服务后配置将失效。例如: SET GLOBAL sequoiadb_auto_partition=OFF ;
    详细配置参数说明:MySQL 实例配置

4. 创建数据库及数据表

进入 MySQL shell,连接 SequoiaSQL-MySQL 实例并创建 company 数据库,为接下来验证 MySQL 实例是否安装成功提供测试数据。
登录 MySQL shell

/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root

创建数据库

CREATE DATABASE company;
USE company;

创建数据表
在 SequoiaSQL-MySQL 实例中创建的表将会默认使用 SequoiaDB 数据库存储引擎,包含主键或唯一键的表将会默认以唯一键作为分区键,进行自动分区。
1)创建包含自增主键字段的 employee 表;

CREATE TABLE employee 
(
empno INT AUTO_INCREMENT PRIMARY KEY, 
ename VARCHAR(128), 
age INT
);

2)进行基本的数据写入操作;

INSERT INTO employee (ename, age) VALUES ("Jacky", 36);
INSERT INTO employee (ename, age) VALUES ("Alice", 18);

3)退出 MySQL Shell;

\q

5. 存储引擎中查看数据

查看 SequoiaSQL-MySQL 实例中 employee 数据表在 SequoiaDB 数据库存储引擎中对应的分区表,并查看数据记录。

查询SequoiaDB数据
1)使用 Linux 命令行进去 SequoiaDB Shell;

sdb

2)使用javascript 语法连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查看存储引擎中的集合信息;

db.list(SDB_LIST_COLLECTIONS);

4)查找 employee 中的数据,查看是否为 SequoiaSQL-MySQL 实例中插入的数据;

db.company.employee.find();

5)向 employee 集合中插入数据;

db.company.employee.insert( { ename: "Ben", age: 20 } );

6)退出 SequoiaDB Shell;

quit;

查询 MySQL 实例数据
验证 SequoiaDB Shell 中插入的数据能否在 SequoiaDB-MySQL 实例查询。
1)使用 MySQL Shell 连接 SequoiaSQL-MySQL 实例;

/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root

2)切换到 company 数据库;

USE company;

3)查询 employee 表中数据,是否存在 ename 字段值 Ben 的数据;

SELECT * FROM employee WHERE ename = 'Ben';

4)退出 MySQL Shell;

\q

6. 总结

本课程主要讲述 SequoiaSQL-MySQL 实例的安装部署,同时也创建了数据库和数据表进行测试。

创建PostgreSQL实例

本课程将带领您在已经部署 SequoiaDB 巨杉数据库引擎的环境中,安装部署 SequoiaSQL-PostgreSQL 实例,并进行简单的数据操作验证安装环境。

PostgreSQL 实例简介
SequoiaDB 巨杉数据库支持创建 PostgreSQL 实例,完全兼容 PostgreSQL 语法,用户可以使用 SQL 语句访问 SequoiaDB 数据库,完成对数据的增、删、查、改及其他操作。
部署架构:
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,其中包括:1个 SequoiaSQL-PostgreSQL 数据库实例节点,1个引擎协调节点,1个编目节点与3个数据节点。

1. 安装 SequoiaSQL-PostgreSQL 实例程序

安装 SequoiaSQL-PostgreSQL 实例程序需要 root 系统用户,程序已经提前放置在 /home/shiyanlou/sequoiadb-3.4 目录。
1)切换至 root 系统用户;

sudo su

Note: 实验环境已经为 shiyanlou 用户配置 sudo 免密权限。
2)进入软件包放置目录;

cd /home/shiyanlou/sequoiadb-3.4

3)设置 SequoiaSQL-PostgreSQL 实例程序权限为可执行;

chmod +x sequoiasql-postgresql-3.4-x86_64-installer.run  

4)安装 SequoiaSQL-PostgreSQL 实例;

./sequoiasql-postgresql-3.4-x86_64-installer.run --mode text

安装步骤选择说明请参考(本示例安装仅使用默认选择):
SequoiaSQL-PostgreSQL 实例安装向导说明

2. 创建 PostgreSQL 实例

1)切换 sdbadmin 用户;

su - sdbadmin

2)进入 SequoiaSQL-PostgreSQL 实例安装目录;

cd /opt/sequoiasql/postgresql

3)创建 PostgreSQL 实例;

bin/sdb_sql_ctl addinst myinst -D database/5432/

4)启动 PostgreSQL 实例;

bin/sdb_sql_ctl start myinst

5)检查创建的实例状态;

bin/sdb_sql_ctl status

3. 创建域、集合空间、集合

在 SequoiaDB 巨杉数据库引擎中创建域、集合空间、集合,用于 PostgreSQL 实例创建的外部表进行映射。

1)通过 Linux 命令行进入 SequoiaDB Shell;

sdb

2)通过 javascript 语言连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)创建 company_domain 逻辑域;

db.createDomain("company_domain", [ "group1", "group2", "group3" ], { AutoSplit: true } );

copy
4)创建 company 集合空间;

db.createCS("company", { Domain: "company_domain" } );

5)创建 employee 集合;

db.company.createCL("employee", {"ShardingKey": { "_id": 1}, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );

6)在 JSON 实例集合 company 中插入数据;

db.company.employee.insert( { "empno": 1, "ename": "Georgi", "age": 48 } );
db.company.employee.insert( { "empno": 2, "ename": "Bezalel", "age": 21 } );

7)退出 SequoiaDB Shell ;

quit;

4. 创建数据库及配置实例

本小节,将在 PostgreSQL 实例中创建外部表与上一个小节在 SequoiaDB 巨杉数据库存储引擎中创建的集合空间、集合进行映射。
1)创建 company 数据库;

bin/sdb_sql_ctl createdb company myinst

2)进入 PostgreSQL shell;

bin/psql -p 5432 company

3)加载 SequoiaDB 连接驱动;

CREATE EXTENSION sdb_fdw;

4)配置与 SequoiaDB 连接参数;

CREATE SERVER sdb_server FOREIGN DATA WRAPPER sdb_fdw 
OPTIONS (address '127.0.0.1', service '11810', preferedinstance 'A', transaction 'on');

Note:

  • 如果需要提供多个协调节点地址,options 中的 address 字段可以按格式 'ip1:port1,ip2:port2,ip3:port3'填写。此时,service 字段可填写任意一个非空字符串
  • preferedinstance 设置 SequoiaDB 的连接属性。多个属性以逗号分隔,如:preferedinstance '1,2,A'。详细配置请参考 preferedinstance 取值
  • transaction 设置 SequoiaDB 是否开启事务,默认为off。开启为on 更多 SequoiaDB 连接参数说明请参考 PostgreSQL 实例连接

5)创建 company 数据库外表;

CREATE FOREIGN TABLE employee 
(
  empno INTEGER, 
  ename TEXT,
  age INTEGER
) SERVER sdb_server 
OPTIONS (collectionspace 'company', collection 'employee', decimal 'on');

Note:

  • collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
  • collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
  • decimal 参数值为 on 时,表示需要对接 SequoiaDB 的decimal字段 更多 PostgreSQL 实例外表创建参数请参考 PostgreSQL 实例连接

5. 在 PostgreSQL 实例中对数据进行操作

1)更新表的统计信息;

ANALYZE employee;

2)查询 employee 表中的数据;

SELECT * FROM employee;

3)写入数据;

INSERT INTO employee VALUES (3, 'Jack', 27);

4)更改数据,更改 Jack 的岁数为 28;

UPDATE employee SET age = 28 WHERE ename = 'Jack';

5)查看员工 Jack 的岁数是否更改为28;

SELECT * FROM employee WHERE ename = 'Jack';

6)退出 PostgreSQL shell;

\q

6. 存储引擎中查看数据

查看 SequoiaSQL-PostgreSQL 实例中 employee 数据表在 SequoiaDB 数据库存储引擎中对应的分区表,并查看数据记录。
1)通过 Linux 命令行进入 SequoiaDB Shell;

sdb

2)通过 javascript 语言连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查询 employee 集合中的数据是否与PostgreSQL 实例操作的结果一致;

db.company.employee.find();

3)退出 SequoiaDB Shell;

quit;

7. 总结

通过本课程我们学会了 SequoiaSQL-PostgreSQL 实例的安装部署和基本操作、在 SequoiaDB 数据库引擎中创建数据域、集合空间和集合。

创建SparkSQL实例

本课程主要介绍如何在 Linux 环境中部署巨杉数据库的 SparkSQL 实例,以及讲解建表、查询等基本操作。

SparkSQL实例简介
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 为结构化数据处理引入了一个称为 Spark SQL 的编程模块。它提供了一个称为 DataFrame 的编程抽象,并且可以充当分布式 SQL 查询引擎。
部署架构:
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,其中包括:1个 SparkSQL 数据库实例包括1个 worker 节点,1个 SequoiaSQL-MySQL 数据库实例节点,1个引擎协调节点,1个编目节点与3个数据节点。

1. 切换用户及查看数据库版本

切换到 sdbadmin 用户
部署 SequoiaDB 巨杉数据库和 SequoiaSQL-MySQL 实例的操作系统用户为 sdbadmin。

su - sdbadmin

用户 sdbadmin 的密码为 sdbadmin
查看巨杉数据库版本
查看 SequoiaDB 巨杉数据库引擎版本。

sequoiadb --version

2. 查看节点启动列表

查看 SequoiaDB 巨杉数据库引擎节点列表。

sdblist 

3. 创建 Spark 元数据库

本示例使用 MySQL 实例存储 Spark 引擎的元数据信息,故需要在 MySQL 实例中创建一个数据库进行存储。

1)使用 MySQL Shell 连接 SequoiaDB-MySQL 实例;

/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root

2)创建 metauser 用户;

CREATE USER 'metauser'@'%' IDENTIFIED BY 'metauser';

3)给 metauser 用户授权;

GRANT ALL ON *.* TO 'metauser'@'%';

4)刷新权限;

FLUSH PRIVILEGES;

5)创建元数据库;

CREATE DATABASE metastore CHARACTER SET 'latin1' COLLATE 'latin1_bin';

4. 创建测试数据库及数据表

在 SequoiaSQL-MySQL 实例中创建数据表,为 Spark 安装完毕后进行数据操作测试提供测试数据。SequoiaSQL-MySQL 实例默认使用 SequoiaDB 数据库存储引擎,在 MySQL 上创建表将同步在 SequoiaDB 上创建对应的分区表(hash分区,包含所有分区组)。自动分区时,分区键按顺序优先使用主键字段和唯一索引字段。如果两者都没有,则不做分区。
1)创建数据库,并切换到该数据库;

CREATE DATABASE company;
USE company;

2)创建包含自增主键字段的 employee 表;

CREATE TABLE employee 
(
empno INT AUTO_INCREMENT PRIMARY KEY, 
ename VARCHAR(128), 
age INT
);

3)进行基本的数据写入操作;

INSERT INTO employee (ename, age) VALUES ("Jacky", 36);
INSERT INTO employee (ename, age) VALUES ("Alice", 18);

4)退出 MySQL Shell;

\q

5. Spark 实例配置

Spark 安装包和 MySQL 驱动已放置在 /home/sdbadmin/soft 目录下,本示例使用 Spark 的 standalone 模式安装。

解压 Spark 安装包

1)进入安装包存放目录;

cd /home/sdbadmin/soft

2)解压安装包;

tar -zxvf spark-2.4.4-bin-hadoop2.7.tar.gz -C /opt

6. 设置免密

部署 Spark 实例为了实现自动化操作,需要配置 ssh 免密码登陆方式。
1)执行 ssh-keygen 生成公钥和密钥,执行后连续回车即可;

ssh-keygen -t rsa

2)执行 ssh-copy-id,把公钥拷贝到本机的 sdbadmin 用户;

ssh-copy-id  sdbadmin@sdbserver1

用户 sdbadmin 的密码是:sdbadmin

7. 设置 spark-env.sh

1)进入 Spark 的配置目录;

cd /opt/spark-2.4.4-bin-hadoop2.7/conf

2)从模板中拷贝 spark-env.sh 文件;

cp spark-env.sh.template spark-env.sh

3)设置 Spark 实例的 Master;

echo "SPARK_MASTER_HOST=sdbserver1" >> spark-env.sh

4)查看 spark-env.sh 文件是否设置成功;

cat spark-env.sh

8. 设置元数据库

指定 Spark 实例的元数据信息存放的数据库信息。

1)创建设置元数据数据库配置文件 hive-site.xml;

cat > /opt/spark-2.4.4-bin-hadoop2.7/conf/hive-site.xml << EOF
<configuration>
   <property>
     <name>hive.metastore.schema.verification</name>
     <value>false</value>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/metastore?useSSL=false</value>
      <description>JDBC connect string for a JDBC metastore</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>metauser</value>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>metauser</value>
   </property>
   <property>
      <name>datanucleus.autoCreateSchema</name>
      <value>true</value>
      <description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>
   </property>
</configuration>
EOF

2)检查是否创建成功;

cat /opt/spark-2.4.4-bin-hadoop2.7/conf/hive-site.xml

9. 拷贝相关驱动

用户只要将 SequoiaDB for Spark 连接器 spark-sequoiadb_2.11-3.4.jar 和 SequoiaDB 的 Java 驱动 sequoiadb-driver-3.4.jar 加入 Spark 的 jar 目录即可,另外本示例使用了 MySQL 作为元数据存储数据库,也需要加入 MySQL 的 Java 驱动 mysql-jdbc.jar。

1)拷贝 spark-sequoiadb_2.11-3.4.jar 驱动连接器;

cp /opt/sequoiadb/spark/spark-sequoiadb_2.11-3.4.jar  /opt/spark-2.4.4-bin-hadoop2.7/jars/

2)拷贝 SequoiaDB 的 java 驱动 sequoiadb-driver-3.4.jar;

cp /opt/sequoiadb/java/sequoiadb-driver-3.4.jar  /opt/spark-2.4.4-bin-hadoop2.7/jars/

3)拷贝 MySQL 的 java 驱动 mysql-jdbc.jar;

cp /home/sdbadmin/soft/mysql-jdbc.jar  /opt/spark-2.4.4-bin-hadoop2.7/jars/  

10. 设置 Spark 日志级别

由于 Spark 默认日志级别为 INFO ,运行 spark-sql 客户端时会打印大量日志输出屏幕,为了避免这个问题把日志级别改为 ERROR。

1)拷贝 log4j.properties;

cp log4j.properties.template  log4j.properties

2)log4j.properties 中设置日志级别;

sed -i 's/log4j.rootCategory=INFO, console/log4j.rootCategory=ERROR, console/g' log4j.properties

3)检查日志输出配置是否成功;

cat log4j.properties

11. 测试 SparkSQL 实例

之前的小节已经创建了 Spark 元数据库,并且通过 SequoiaSQL-MySQL 实例创建了分区表。本小节将对 SparkSQL 实例进行测试。

1)进入 Spark 的安装目录;

cd /opt/spark-2.4.4-bin-hadoop2.7

2)启动 Spark;

sbin/start-all.sh

3)查看 Spark 的 master 和 worker 是否启动完成;

jps

启动 spark-sql 客户端;

bin/spark-sql

5)创建 company 数据库;

CREATE DATABASE company;
USE company;

6)创建映射表;

CREATE TABLE company.employee 
(
empno INT,
ename STRING,
age INT
) USING com.sequoiadb.spark OPTIONS (host 'localhost:11810', collectionspace 'company', collection 'employee', username '', password '');

Note:

  • host 参数指定 SequoiaDB 数据库的协调节点/独立节点地址,多个地址以","分隔
  • collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
  • collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
  • username 参数指定 SequoiaDB 数据库的连接用户名,若 SequoiaDB 数据库没有配置用户则设为空串('')
  • password 参数指定 SequoiaDB 数据库的连接用户对应的密码,若 SequoiaDB 数据库没有配置用户则设为空串('')

7)测试运行 sql;

SELECT AVG(age) FROM company.employee;

8)退出 spark-sql 客户端;

exit;

12. 总结

本课程介绍了 standalone 模式下的 Spark 如何与 SequoiaDB 数据库引擎进行对接,并进行了数据操作。

多实例共享数据

本课程讲述多个实例共存的情况,实例包括:SequoiaDB-MySQL、SequoiaDB-PostgreSQL、SparkSQL、JSON 实例。由于全部实例的存储引擎均为 SequoiaDB 巨杉数据库,故它们之间的数据是共享的。
环境架构:
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,其中包括:1 个 SequoiaSQL-MySQL 数据库实例节点、1 个 SequoiaSQL-PostgreSQL 数据库实例节点、1 个 SparkSQL 实例节点、1 个 JSON 实例节点、1个引擎协调节点,1个编目节点与3个数据节点。
详细了解 SequoiaDB 巨杉数据库系统架构:
实验环境
课程使用的实验环境为 Ubuntu Linux 16.04 64 位版本。SequoiaDB 数据库引擎以及 SequoiaSQL-MySQL、SequoiaDB-PostgreSQL、JSON 实例均为 3.4 版本、SequoiaDB-Spark驱动连接器版本为3.4、 SparkSQL 版本为 2.4.4。

1. 切换用户

部署 SequoiaDB 巨杉数据库和 SequoiaSQL-MySQL、SequoiaSQL-PostgreSQL、SparkSQL 实例的操作系统用户为 sdbadmin。

su - sdbadmin

sdbadmin 用户的密码为 sdbadmin

2. 检查环境

检查 SequoiaDB 巨杉数据库和 SequoiaSQL-MySQL、SequoiaSQL-PostgreSQL、SparkSQL 实例是否已启动。
检查SequoiaDB节点启动列表
查看 SequoiaDB 巨杉数据库引擎节点列表。

sdblist

如果显示的节点数量与预期不符,请稍等初始化完成并重试该步骤。

C: 编目节点,S:协调节点,D:数据节点

检查SequoiaSQL-MySQL实例
检查 SequoiaSQL-MySQL实例是否已启动。

/opt/sequoiasql/mysql/bin/sdb_sql_ctl status

检查SequoiaSQL-PostgreSQL实例
检查 SequoiaSQL-PostgreSQL实例是否已启动。

/opt/sequoiasql/postgresql/bin/sdb_sql_ctl status

检查 SparkSQL 实例
检查 SequoiaSQL-PostgreSQL实例是否已启动。

1)查看 Spark 的 master 和 worker 是否已启动;

jps

由于环境配置较低,如果显示的进程数量与预期不符,请稍等初始化完成并重试该步骤。

3. MySQL 实例中创建表

上一小节在 SequoiaSQL-MySQL 中创建表时会同步在 SequoiaDB 巨杉数据库引擎中创建集合空间和集合,本小节使用 JavaScript 语法在 JSON 实例上查询插入的数据。
1)在 Linux 命令行,进入SequoiaDB Shell;

sdb

2)使用 javascript 语法连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查找 employee 中的数据,查看是否为 SequoiaSQL-MySQL 实例中插入的数据;

db.company.employee.find();

4)退出 SequoiaDB Shell;

quit;

4. JSON 实例中访问数据

上一小节在 SequoiaSQL-MySQL 中创建表时会同步在 SequoiaDB 巨杉数据库引擎中创建集合空间和集合,本小节使用 JavaScript 语法在 JSON 实例上查询插入的数据。

1)在 Linux 命令行,进入SequoiaDB Shell;

sdb

2)使用 javascript 语法连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查找 employee 中的数据,查看是否为 SequoiaSQL-MySQL 实例中插入的数据;

db.company.employee.find();

4)退出 SequoiaDB Shell;

quit;

5. PostgreSQL 实例中访问数据

前面小节在 SequoiaSQL-MySQL 中创建表时会同步在 SequoiaDB 巨杉数据库引擎中创建集合空间和集合,本小节将在 PostgreSQL 实例上查询插入的数据。

创建数据库及配置实例
1)创建 company 数据库;

/opt/sequoiasql/postgresql/bin/sdb_sql_ctl createdb company myinst

2)进入 PostgreSQL shell;

/opt/sequoiasql/postgresql/bin/psql -p 5432 company

3)加载SequoiaDB连接驱动;

CREATE EXTENSION sdb_fdw;

4)配置与SequoiaDB连接参数;

CREATE SERVER sdb_server FOREIGN DATA WRAPPER sdb_fdw OPTIONS
(
address '127.0.0.1', 
service '11810', 
preferedinstance 'A', 
transaction 'off'
);

Note:

如果需要提供多个协调节点地址,options 中的 address 字段可以按格式 'ip1:port1,ip2:port2,ip3:port3'填写。此时,service 字段可填写任意一个非空字符串
preferedinstance 设置 SequoiaDB 的连接属性。多个属性以逗号分隔,如:preferedinstance '1,2,A'。详细配置请参考 preferedinstance 取值
transaction 设置 SequoiaDB 是否开启事务,默认为off。开启为on 更多 SequoiaDB 连接参数说明请参考 PostgreSQL 实例连接
关联存储引擎中的集合
1)创建 company 数据库外表;

CREATE FOREIGN TABLE employee 
(
  empno INTEGER, 
  ename TEXT,
  age INTEGER
) SERVER sdb_server 
OPTIONS (collectionspace 'company', collection 'employee', decimal 'on');

collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
decimal 参数值为 on 时,表示需要对接 SequoiaDB 的decimal字段 更多 PostgreSQL 实例外表创建参数请参考 PostgreSQL 实例连接

2)更新表的统计信息;

ANALYZE employee;

3)查询 employee 表中的数据;

SELECT * FROM employee;

4)退出 PostgreSQL shell ;

\q

6. SparkSQL 实例中访问数据

前面小节在 SequoiaSQL-MySQL 中创建表时会同步在 SequoiaDB 巨杉数据库引擎中创建集合空间和集合,本小节将在 SparkSQL 实例上查询插入的数据。

Note:

本章节 Spark 的安装目录为 /opt/spark,在实际环境中 Spark 的目录可根据实际情况安装在相应的目录中

1)进入 SparkSQL 实例安装目录;

cd /opt/spark/

2)进入 spark-sql 客户端测试 sql;

bin/spark-sql

3)创建 company 数据库;

CREATE DATABASE company;

4)创建映射表;

CREATE TABLE company.employee 
(
empno INT,
ename STRING,
age INT
) USING com.sequoiadb.spark OPTIONS (host 'localhost:11810', collectionspace 'company', collection 'employee', username '', password '');

Note:

host 参数指定 SequoiaDB 数据库的协调节点/独立节点地址,多个地址以","分隔
collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
username 参数指定 SequoiaDB 数据库的连接用户名,若 SequoiaDB 数据库没有配置用户则设为空串('')
password 参数指定 SequoiaDB 数据库的连接用户对应的密码,若 SequoiaDB 数据库没有配置用户则设为空串('')

5)测试运行 sql;

SELECT AVG(age) FROM company.employee;

6)退出 spark-sql 客户端;

exit;

7. 总结

本课程通过在 SequoiaDB-MySQL 实例上创建数据库和数据表,并向数据表中插入数据,使底层存储 SequoiaDB 巨杉数据库引擎同步创建分区表,再使用 JSON 实例、SequoiaDB-PostgreSQL 实例和 SparkSQL 实例查询该分区表证明了多实例的之间的数据是共享的。

创建S3对象存储实例

本课程主要介绍如何在 Linux 环境中部署巨杉数据库的 S3 对象存储实例,以及进行文件上传、下载等数据操作。

S3 实例简介
SequoiaS3 系统实现通过 AWS S3 接口访问 SequoiaDB 的能力,将 S3 接口中的区域、桶和对象映射为 SequoiaDB 中的集合空间,集合,记录和 Lob对象,实现桶的增、删、查,对象的增、删、查,对象的版本管理,以及分段上传的能力,支持从 Amazon S3 或其他实现 S3 接口的存储服务平滑迁移到 SequoiaDB 数据库。
部署架构
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,包括1个 SequoiaS3 实例,1个引擎协调节点,1个编目节点与3个数据节点。

1. 切换用户

部署 SequoiaDB 巨杉数据库和 SequoiaS3 实例的操作系统用户为 sdbadmin。

su - sdbadmin

sdbadmin 用户的密码为 sdbadmin

2. 检查服务状态

检查 SequoiaDB 巨杉数据库引擎以及 SequoiaSQL-MySQL 实例的服务状态。
1)查看 SequoiaDB 巨杉数据库存储引擎节点列表;

sdblist 

Note:
如果显示的节点数量与预期不符,请稍等初始化完成并重试该步骤。
C: 编目节点,S:协调节点,D:数据节点

3. 配置巨杉数据库事务级别

配置 SequoiaDB,SequoiaS3 对接的 SequoiaDB 需开启RC级别事务,且配置为等锁模式。

1)使用 Linux 命令进入 SequoiaDB Shell;

sdb
2)使用 JavaScript 语法连接协调节点获取数据库连接;

var db = new Sdb("localhost", 11810);

3)设置事务级别及配置为等锁模式;

db.updateConf( { transactionon: true, transisolation: 1, translockwait: true } );

4)观察 SequoiaDB 存储引擎中的集合及集合空间;

db.list(SDB_LIST_COLLECTIONS);

5)退出 SequoiaDB Shell;

quit;

4. 配置 SequoiaS3

1)进入 SequoiaS3 程序目录;

cd /opt/sequoiadb/tools/sequoias3

2)配置 SequoiaS3,打开 config 目录中的 application.properties 文件;

cat config/application.properties

3)增加以下内容至 application.properties 文件,配置对外监听端口;

echo "server.port=8002" >> /opt/sequoiadb/tools/sequoias3/config/application.properties

4)增加以下内容至 application.properties 文件,配置 coord 节点的 IP 和端口,可以配置多组并使用逗号分隔;

echo "sdbs3.sequoiadb.url=sequoiadb://localhost:11810" >> /opt/sequoiadb/tools/sequoias3/config/application.properties
  • 阅读tools/sequoias3目录中的README.txt文件。
  • 注意缺省的用户名,AccessKeyID,SecreatKeyID,本例中使用这些参数,访问S3接口:more README.txt
  • 默认管理员账户名:administrator
  • 默认管理员AccessKeyID:ABCDEFGHIJKLMNOPQRST
  • 默认管理员用户SecreatKeyID:abcdefghijklmnopqrstuvwxyz0123456789ABCD
    更多详细配置请参考 SequoiaS3 配置

5. 启动S3实例

1)启动 SequoiaS3;

./sequoias3.sh start
copy
Note: 如需停止 SequoiaS3 进程,执行 stop -p {port} 停止监听指定端口的 SequoiaS3 进程,或执行 stop -a 停止所有 SequoiaS3 进程:./sequoias3.sh stop -p 8002

查看启动 SequoiaS3 程序后创建的集合空间和集合
查看在 SequoiaDB 存储引擎中的 S3 元数据表,S3 实例在启动时,如果这些元数据表不存在会自动创建。

1)使用 Linux 命令进入 SequoiaDB Shell;

sdb

2)使用 JavaScript 语法连接协调节点获取数据库连接;

var db = new Sdb("localhost", 11810);

3)观察 SequoiaDB 存储引擎中的集合及集合空间;

db.list(SDB_LIST_COLLECTIONS);

4)退出 SequoiaDB Shell;

quit;

6.操作 bucket 及文件对象

在本例中将使用 curl restful 方式来测试 s3 接口。

1)创建存放数据文件的目录 /home/sdbadmin/s3;

mkdir -p /home/sdbadmin/s3

2)切换至 /home/sdbadmin/s3 目录;

cd /home/sdbadmin/s3

创建桶 sdbbucket
1)在 shell 环境中设置变量及相关值;

bucket="sdbbucket"  
dateValue=`date -R`  
resource="/${bucket}/"  
contentType="application/octet-stream"  
stringToSign="PUT\n\n\n${dateValue}\n${resource}"  
s3Key="ABCDEFGHIJKLMNOPQRST"  
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"  
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`  

2)使用 curl 创建一个 sdbbucket;

curl -v -X PUT "http://localhost:8002/${bucket}" -H "Host: localhost:8002" -H "Date: ${dateValue}" -H "Authorization: AWS ${s3Key}:${signature}"   

获取S3中的sdbbucket信息
1)使用 curl 获取上个小节创建的 sdbbucket 的信息;

curl -v -X GET "http://localhost:8002" -H "Host: localhost:8002" -H "Date: ${dateValue}" -H "Authorization: AWS ${s3Key}:${signature}"   
获取S3中的sdbbucket信息

1)使用 curl 获取上个小节创建的 sdbbucket 的信息;

curl -v -X GET "http://localhost:8002" -H "Host: localhost:8002" -H "Date: ${dateValue}" -H "Authorization: AWS ${s3Key}:${signature}"   

7. 观察 S3 元数据

S3 的所有元数据都存储在 SequoiaDB 存储引擎的集合中,可以通过 SequoiaDB Shell 进行查看。

1)使用 Linux 命令进入 SequoiaDB Shell;

sdb

2)使用 JavaScript 语法连接协调节点获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查看创建的"sdbbucket" bucket的元数据;

db.S3_SYS_Meta.S3_Bucket.find();

4)查看上载的文件的元数据;

db.S3_SYS_Meta.S3_ObjectMeta.find();

5)文件对象所在的集合,这个集合由 S3 实例自动创建,并且默认按照每年每个季度分表,及每个季度产生一个新的Collection;

db.S3_SYS_Data_2020_1.S3_ObjectData_Q1.listLobs();

6)退出 SequoiaDB Shell;

quit;

8. 从s3实例中删除文件和桶

1)在 shell 环境中设置变量及相关值;

objname="sdb"  
bucket=sdbbucket  
url="localhost:8002"  
resource="/${bucket}/${objname}"  
contentType="application/x-compressed-tar"  
dateValue=`date -R`  
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"  
s3Key="ABCDEFGHIJKLMNOPQRST"  
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"  
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`  

2)使用 curl 命令 删除 sdbbucket 中的文件对象"sdb";

curl  -X DELETE  -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}/${objname}"

3)使用 curl 命令,从 SequoiaS3 中删除桶"sdbbucket";

curl  -X DELETE  -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}"

4)使用 Linux 命令进入 SequoiaDB Shell;

sdb

5)使用 JavaScript 语法连接协调节点获取数据库连接;

var db = new Sdb("localhost", 11810);

6)查看 bucket 的元数据已被删除;

db.S3_SYS_Meta.S3_Bucket.find();

7)查看文件对象已被删除;

db.S3_SYS_Data_2020_1.S3_ObjectData_Q1.listLobs();

8)查看文件对象元数据信息已被删除;

db.S3_SYS_Meta.S3_ObjectMeta.find();

9)退出 SequoiaDB Shell;

quit;

9. 总结

SequoiaS3 系统实现通过 AWS S3 接口访问 SequoiaDB 的能力,实现桶的增、删、查,对象的增、删、查,对象的版本管理,以及分段上传的能力,支持从 Amazon S3 或其他实现 S3 接口的存储服务平滑迁移到 SequoiaDB 数据库。

  1. 创建NFS网络文件系统

    本课程主要介绍如何在 Linux 环境中部署巨杉数据库的 SequoiaFS 文件系统实例,对文件和目录进行操作。

FS实例简介
SequoiaFS 文件系统是基于 FUSE 在 Linux 系统下实现的一套文件系统,支持通用的文件操作 API。SequoiaFS 利用 SequoiaDB 的元数据集合存储文件和目录的属性信息,Lob 对象存储文件的数据内容,从而实现了类似 NFS 分布式网络文件系统。用户可以将远程SequoiaDB 的某个目标集合通过映射的方式挂载到本地 FS 节点,在 FS 节点的挂载目录下实现通过通用文件系统 API 对文件和目录进行操作。
部署架构
本课程中 SequoiaDB 巨杉数据库的集群拓扑结构为三分区单副本,包括1个 SequoiaFS 实例、1个引擎协调节点,1个编目节点与3个数据节点。

1. 切换用户及查看数据库版本

切换到 sdbadmin 用户
部署 SequoiaDB 巨杉数据库和 SequoiaFS 实例的操作系统用户为 sdbadmin。

su - sdbadmin
用户 sdbadmin 的密码为 sdbadmin

查看巨杉数据库版本
查看 SequoiaDB 巨杉数据库引擎版本。

sequoiadb --version

2. 环境检查

1)查看 SequoiaDB 巨杉数据库引擎节点列表;

sdblist 

如果显示的节点数量与预期不符,请稍等初始化完成并重试该步骤。
C: 编目节点,S:协调节点,D:数据节点

3. 创建集合空间和集合

进入 SequoiaDB Shell,在 SequoiaDB 中创建集合空间和集合,用于存储在 SequoiaFS 实例挂载目录上的文件和目录。

1)通过 Linux 命令行进入 SequoiaDB Shell;

sdb

2)通过 javascript 语言连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)创建 fs_domain 逻辑域;

db.createDomain("fs_domain", [ "group1", "group2", "group3" ], { AutoSplit: true } );

4)创建 fscs 集合空间;

db.createCS("fscs", { Domain: "fs_domain" } );

5)创建 fscl 集合,存储挂载目录下文件的内容;

db.fscs.createCL("fscl", { "ShardingKey": { "_id": 1}, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );

6)关闭数据库连接;

db.close();

7)退出SequoiaDB Shell;

quit;

4. 创建挂载点及配置文件

SequoiaFS 实例将集合 fscl 作为文件系统挂载到 /opt/sequoiafs/mountpoint 目录。

Note:
/opt/sequoiafs/mountpoint 目录只是本章节用于测试的例子,在实际环境中使用时可根据系统架构调整修改。

1)创建挂载点 mountpoint;

mkdir -p /opt/sequoiafs/mountpoint

2)创建 SequoiaFS 的配置文件目录和日志目录;

mkdir -p /opt/sequoiafs/conf/fscs_fscl/001/
mkdir -p /opt/sequoiafs/log/fscs_fscl/001/
3)产生一个空配置文件,SequoiaFS 服务在启动时会将指定的值写入该文件中,其他参数使用缺省值;
touch /opt/sequoiafs/conf/fscs_fscl/001/sequoiafs.conf

5. 启动 SequoiaFS 服务

SequoiaFS 实例通过 sequoiafs 工具启动服务并挂载对应的目录,/opt/sequoiafs/mountpoint 目录一旦挂载后,/opt/sequoiafs/mountpoint 目录下的所有文件的属性信息会存放在 SequoiaDB 数据库的目录元数据集合及文件元数据集合中,而文件内容会以 Lob 对象的形式存放在目标集合。

sequoiafs /opt/sequoiafs/mountpoint -i localhost:11810 -l fscs.fscl --autocreate -c /opt/sequoiafs/conf/fscs_fscl/001/ --diagpath  /opt/sequoiafs/log/fscs_fscl/001/ -o big_writes -o max_write=131072 -o max_read=131072

Note:

-i 指定 SequoiaDB 数据库协调节点地址
-l 指定存储挂载目录文件内容的集合
-c 指定 SequoiaFS 服务的配置文件目录
--diagpath 指定 SequoiaFS 服务的日志目录
更多参数选项详情,请参考SequoiaFS 实例参数配置

6. 查看挂载目录

1)本地 SequoiaFS 节点通过 mount 可以看到挂载信息。通过 sequoiafs 挂载上的 /opt/sequoiafs/mountpoint 目录,文件系统类型为 fuse.sequoiafs;

mount

从SequoiaDB存储引擎查看挂载信息
1)使用 Linux 命令进入 SequoiaDB Shell;

sdb

2)使用 JavaScript 语法连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查看 SequoiaFS 实例在 SequoiaDB 存储引擎创建的集合信息;

db.list(SDB_LIST_COLLECTIONS);

Note:

集合 sequoiafs.fscl_dir142361856883863522 是由 SequoiaFS 实例自动产生的,用于存储目录的属性信息,可能和课程中产生的不一样
集合 sequoiafs.fscl_file142361856883863522 是由 SequoiaFS 实例自动产生的,用于存储文件的属性信息,可能和课程中产生的不一样
集合 sequoiafs.maphistory 是映射挂载历史信息表,记录历史挂载的关键数据信息
集合 sequoiafs.sequenceid 是在目录元数据中,目录记录的id序列表,目的用于构造目录的唯一性

4)查看 SequoiaFS 实例在 SequoiaDB 存储引擎存储的挂载信息;

 db.sequoiafs.maphistory.find();

5)关闭数据库连接;

db.close();

6)退出 SequoiaDB Shell;

quit;

7. 挂载目录下文件和目录操作

本章节将创建 fsdir 目录和 fsfile.txt 文件用于作为 SequoiaFS 实例的测试例子。

创建目录
1)进入挂载目录;

cd /opt/sequoiafs/mountpoint/

2)创建目录;

mkdir fsdir

3)查看目录是否存在;

ls -trl

创建文件并写入内容
1)进入新建的 fsdir 目录;

cd /opt/sequoiafs/mountpoint/fsdir

2)使用 echo 重定向内容创建文件;

echo 'hello, this is a fsfile!' >> fsfile.txt

3)查看文件内容是否存在;

cat fsfile.txt

从SequoiaDB存储查看文件内容
查看新建的文件和目录在 SequoiaDB 数据库存储引擎中存储情况。

1)使用 Linux 命令进入 SequoiaDB Shell;

sdb

2)通过 javascript 语言连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查看 SequoiaFS 实例在 SequoiaDB 存储引擎创建的集合信息;

db.list(SDB_LIST_COLLECTIONS);

4)查看目录属性在存储引擎中存储情况;

db.sequoiafs.fscl_dir142361856883863522.find();

集合 sequoiafs.fscl_dir142361856883863522 是由 SequoiaFS 实例自动产生的,可能和课程中产生的不一样,请根据实际情况进行修改
5)查看文件的属性在存储引擎中的存储情况;

db.sequoiafs.fscl_file142361856883863522.find();

集合 fscl_file142361856883863522 是由 SequoiaFS 实例自动产生的,可能和课程中产生的不一样,请根据实际情况进行修改
6)查看 fsfile.txt 文件内容在存储引擎的存储情况;

db.fscs.fscl.listLobs();

7)关闭数据库连接;

db.close();

8)退出SequoiaDB Shell;

quit;

删除文件和目录
1)切换至 /opt/sequoiafs/mountpoint 目录;

cd /opt/sequoiafs/mountpoint

2)删除文件 fsfile.txt 和目录 fsdir;

ls
rm -R fsdir
ls

从SequoiaDB中查看文件信息
从 SequoiaDB 存储引擎中查看目录和文件信息是否已经删除。

1)使用 Linux 命令进入 SequoiaDB Shell;

sdb

2)通过 javascript 语言连接协调节点,获取数据库连接;

var db = new Sdb("localhost", 11810);

3)查看目录属性在存储引擎中是否已删除;

db.sequoiafs.fscl_dir142361856883863522.find();

Note:

集合 fscl_dir142361856883863522 是由 SequoiaFS 实例自动产生的,可能和课程中产生的不一样,可以使用: db.list (SDB_LIST_COLLECTIONS) 查看实际的集合名

4)查看文件的属性在存储引擎中是否已删除;

db.sequoiafs.fscl_file142361856883863522.find();

Note:

集合 fscl_file142361856883863522 是由 SequoiaFS 实例自动产生的,可能和课程中产生的不一样,可以使用: db.list (SDB_LIST_COLLECTIONS) 查看实际的集合名

5)查看 fsfile.txt 文件内容在存储引擎中是否已删除;

db.fscs.fscl.listLobs();

6)关闭数据库连接;

db.close();

7)退出SequoiaDB Shell;

quit;
  1. 总结
    通过本课程,我们在 Linux 环境下安装部署了 SequoiaFS实例,并且验证了 SequoiaFS 实例支持通过操作系统文件系统接口访问 SequoiaDB 巨杉数据库存储引擎。
  2. 考试

考试介绍

此考试是在完成安装部署 SequoiaDB 巨杉数据库和安装 PostgreSQL 与 MySQL 实例组件的环境中完成 MySQL、PostgreSQL、SparkSQL 实例的创建以及使用。

SequoiaDB 巨杉数据库采用“计算存储分离”架构,支持 MySQL、PostgreSQL 与 SparkSQL 三种关系型数据库实例、类 MongoDB 的 JSON 文档类数据库实例、以及 S3 对象存储与 Posix 文件系统的非结构化数据实例。在事务场景可以利用 SDBAPI、MySQL 和 PGSQL 实例对数据进行操作,在分析场景借助分布式计算框架 Spark 的并发计算性能,提高计算效率。

Note:

考试内容需在 sdbadmin 系统用户下完成,用户密码为 sdbadmin

SequoiaDB 巨杉数据库安装目录(/opt/sequoiadb)
SequoiSQL-MySQL 安装目录(/opt/sequoiasql/mysql)
SequoiSQL-PostgreSQL 安装目录(/opt/sequoiasql/postgresql)

知识点
MySQL,PostgreSQL,SparkSQL实例的创建以及使用过程。

考试内容
1)创建一个 MySQL 实例,实例名为 myinst,使用的端口为 3306;

2)创建 metauser 用户并赋予全局权限,用于创建 SparkSQL 元数据库 metastore,存放元数据信息;

Note:

保持 MySQL 实例用户 root 密码为空

3)在 MySQL 实例中创建数据库 company,数据表 employee ( empno INT, ename VARCHAR(128), age INT ),并写入如下数据,然后查询是否存在数据;

(empno:10001, ename:'Georgi', age:48)
4)创建一个 PostgreSQL 实例,实例名为 pginst,使用的端口为 5432,并与 SequoiaDB 巨杉数据库对接;

5)在 PostgreSQL 实例中创建数据库 company,外部表 employee 与 MySQL 实例创建的分区表对应,然后查询是否存在数据;

6)安装部署 SparkSQL 实例,配置 SparkSQL 的元数据信息到 MySQL 实例中,要求安装后 SPARK 的 HOME 目录为:/home/sdbadmin/spark-2.4.4-bin-hadoop2.7

Note: SparkSQL 实例的安装包目录:/home/sdbadmin/soft

7)SparkSQL 实例中创建数据库 company 和数据表 employee 与 MySQL 实例中创建的数据库 company 和数据表 employee 对应,实现数据共享;

Note:

使用 spark-sql 客户端进行 SparkSQL 的操作

考试要求
1)创建 MySQL,PostgreSQL,SparkSQL实例;

2)实现 MySQL,PostgreSQL,SparkSQL 实例的数据共享;

提示
1)对接过程中使用到的驱动包:SequoiaDB for Spark 连接器 spark-sequoiadb_2.11-3.4.jar,SequoiaDB 的 java 驱动 sequoiadb-driver-3.4.jar,MySQL 的 java 驱动 mysql-jdbc.jar;

Note:

spark-sequoiadb_2.11-3.4.jar 所在目录为 /opt/sequoiadb/spark/spark-sequoiadb_2.11-3.4.jar
sequoiadb-driver-3.4.jar 所在目录为 /opt/sequoiadb/java/sequoiadb-driver-3.4.jar
mysql-jdbc.jar 所在目录为 /home/sdbadmin/soft/mysql-jdbc.jar

2)在 MySQL 实例中,创建用于存储 SparkSQL 的元数据信息的库 metastore,编码设置为 latin1,排序规则类型为 latin1_bin,以下是创建 metastore 的语句;

CREATE DATABASE metastore CHARACTER SET 'latin1' COLLATE 'latin1_bin' ;

3)配置 Spark 的元数据库用到的 hive-site.xml 文件的内容;

<configuration>
   <property>
     <name>hive.metastore.schema.verification</name>
     <value>false</value>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/metastore?useSSL=false</value>
      <description>JDBC connect string for a JDBC metastore</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>metauser</value>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>metauser</value>
   </property>
   <property>
      <name>datanucleus.autoCreateSchema</name>
      <value>true</value>
      <description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>
   </property>
</configuration>
全部评论

相关推荐

来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务