Spark SQL Shell基础操作

在EMR的primary终端下,输入spark-sql命令即可启动Spark SQL-shell:

image-20240218103747967

Spark的metastore

EMR中的spark默认将metadata也存储在MySQL中,MySQL的密码可以从hive的配置找到:

cat /etc/hive/conf/hive-site.xml | grep -C 10 pass

image-20240218104242373

使用该密码登录MySQL:

image-20240218104344896

Spark中的库名存储在DBS下:

image-20240218104420838

在spark SQL shell中创建两个数据库:

create database mydb;
create database mydb2;

image-20240218104511877

在MySQL中查询到了对应的数据库名。

在spark sql shell中执行describe database mydb;, 看到它将文件通过NameNode RPC存储在了HDFS中:

image-20240218104943192

通过执行hdfs命令也可以确认:

image-20240218105107180

创建table

使用Spark SQL Shell创建一张表:

create table if not exists mydb.employees(name string, age integer) row format delimited fields terminated by ',';

image-20240218110137240

可以看到表的metadata也存储在MySQL的TBL表中:

image-20240218110055102

Spark SQL-shell的常用参数

  1. –master: 指定Spark Standalone、YARN或Mesos的master URL, 例如spark-sql --master spark://node5:7077
  2. –deploy-mode: 指定Spark程序的部署模式,可以为client或cluster。
  3. –name: 指定Spark程序的名称。
  4. –executor-memory: 指定每个executor的内存大小,例如2g、4g等。
  5. –num-executors: 指定executor的数量。
  6. –executor-cores: 指定每个executor的核数。
  7. –driver-memory: 指定driver的内存大小。
  8. –conf: 额外的Spark配置属性。