为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

TDH大数据平台培训_第11讲_分布式SQL引擎Inceptor

2022-07-07 7页 pdf 1MB 38阅读

用户头像 个人认证

赵志伟

提供计算机专业技术文档

举报
TDH大数据平台培训_第11讲_分布式SQL引擎Inceptor分布式SQL引擎Inceptor范颖捷|2018.04星环科技星环科技1Inceptor简介2Inceptor架构目录3Inceptor安装与配置CONTENTS4InceptorSQL5InceptorPL/SQL1chapterInceptor简介什么是Inceptor适用场景项目应用1.1什么是InceptorInceptor简介定位•用于数据仓库和交互式分析的大数据平台软件•基于Hadoop的数据仓库产品•分布式通用SQL引擎•基于Hadoop和Spark技术打造特点•Hadoop领域对SQL支持最完善-支持...
TDH大数据平台培训_第11讲_分布式SQL引擎Inceptor
分布式SQL引擎Inceptor范颖捷|2018.04星环科技星环科技1Inceptor简介2Inceptor架构目录3Inceptor安装与配置CONTENTS4InceptorSQL5InceptorPL/SQL1chapterInceptor简介什么是Inceptor适用场景项目应用1.1什么是InceptorInceptor简介定位•用于数据仓库和交互式分析的大数据平台软件•基于Hadoop的数据仓库产品•分布式通用SQL引擎•基于Hadoop和Spark技术打造特点•Hadoop领域对SQL支持最完善-支持SQL2003语法与存储过程-业内唯一支持Oracle方言-业内唯一支持DB2方言-业内唯一支持Teradata方言-帮助用户低成本迁移传统应用星环科技1.1什么是InceptorInceptor简介特点•支持完整分布式事务处理-保证分布式事务处理的ACID特性-支持批量增删改查的分布式事务处理-使用MVCC(Multi-VersionConcurrencyControl)算法自动提供并发控制•优异的大数据处理和分析性能-率先通过100TBTPC-DS的99个复杂业务场景测试-基于内存/SSD的列式存储支持对数十亿条记录的秒级交互式探索分析能力-与ApacheHive相比,数据分析处理速度有显著提升-对于大规模数据集,数据分析处理速度比MPP有显著提升•提供便捷的SQL、PL/SQL开发调试辅助工具Waterdrop星环科技1.2适用场景Inceptor简介离线分析图计算批处理Inceptor图检索交互式分析星环科技1.3项目应用Inceptor简介BI报表工具(JDBC/ODBC)SQLIDE开发工具Web应用系统Inceptor(Waterdrop)(JDBC/ODBC)数据加工工具(SQL/PLSQL)星环科技2chapterInceptor原理Inceptor架构Inceptor数据模型2.1Inceptor架构Inceptor原理CLIInceptorInceptorServerMetastoreJDBC/ODBCConnectorTxSQLSQLPL/SQLTransactionWebUICompilerCompilerManagerTxSQLTxSQLSparkWaterdropHadoopCluster星环科技2.1Inceptor架构Inceptor原理InceptorServer计算引擎•Connector-为BI、ETL工具提供JDBC、ODBC接口•SQL2003Compiler-SQLParser:SQL语法解析器-Rule-based&Cost-basedOptimizer:规则和代价优化器-CodeGenerator:代码生成器•PL/SQLCompiler-ProcedureParser:存储过程解析器-CFGOptimizer:控制流优化器-ParallelOptimizer:并行优化器星环科技2.1Inceptor架构Inceptor原理InceptorServer计算引擎•TransactionManager-DistributedCRUD:分布式增删改-ConcurrencyController:事务并发控制器•Spark-官方认证Transwarp发行版-大数据量下的高稳定性-计算效率更高-功能扩展•计算资源-Executor是资源调度的基本单元-Web可视化配置星环科技2.1Inceptor架构Inceptor原理Metastore•存储Inceptor元数据•元数据主要包括:数据库、表、字段、分区、分桶等信息•元数据存储在TxSQL(MySQL集群)Client客户端•CLI命令行:beeline•JDBC/ODBC•WebUI-HUE:开源的ApacheHadoopUI系统•Waterdrop-高效的InceptorSQLIDE工具-支持主流的关系数据库和数据仓库,如:Oracle、DB2、MySQL、Hive、Teradata、SAP等星环科技2.2Inceptor数据模型Inceptor原理DatabaseTableTablePartitionPartitionPartition(Normal)(Skew)BucketBucketBucketBucketFileFileFileFileFileFileFileFile星环科技2.2Inceptor数据模型Inceptor原理数据库(Database)•数据库是一个包含若干数据表的命名空间和磁盘目录,类似于RDBMS中的数据库•系统会为每个数据库创建一个目录,目录名=数据库名.db•通常无法删除包含表的数据库,应该先删除表,再删除数据库表(Table)•表是数据管理和存储的基本对象,由元数据和表数据组成,类似于RDBMS中的表•托管表(ManagedTable,又称内部表、内表)-系统具有内表的完全控制权,负责管理它的生命周期-元数据存储在Metastore中,表数据存储在所属数据库目录下的对应子目录中,目录名=表名-删除内表时,会同时删除表数据,以及Metastore中的元数据•外部表(ExternalTable,又称外表)-系统不具有外表的完全控制权-元数据存储在Metastore中,表数据存储在指定的外部存储目录中-删除外表时,不会删除表数据,但会删除Metastore中的元数据星环科技2.2Inceptor数据模型Inceptor原理表(Table):存储类型•Text表-系统默认的表类型,无压缩,行存储,仅支持批量Insert-分析查询的性能较低,主要用于导入原始文本数据时建立过渡表•ORC表-优化的列式存储,轻量级索引,压缩比高,仅支持Insert,不支持事务处理-Inceptor计算的主要表类型,主要用于数仓的离线分析,通常由Text表生成•ORC事务表-由ORC表衍生而来,集成了ORC表的所有特性,还支持Insert、Update、Delete,以及事务处理-多版本文件存储,定期做压缩,10~20%的性能损失•Holodesk表-基于内存/SSD的分布式列式存储,内置索引和Cube,速度快,压缩率比ORC表略低,仅支持Insert-适用于海量数据的大批量、复杂、高性能查询,如交互式分析和报表可视化展现星环科技2.2Inceptor数据模型Inceptor原理表(Table):存储类型•Hyperbase表-数据存储在Hyperbase上,支持多种索引类型-支持Insert、Update、Delete-用于高并发的历史数据查询,支持半结构化、非结构化数据存储•ES表-原始数据和索引数据都存储在ElasticSearch中-支持模糊查询和全文检索-用于综合搜索场景•CSV表-数据来源是CSV文件-常用于向Inceptor中导入原始数据,再由它生成ORC表或Holodesk表-建议在计算过程中不要使用CSV表星环科技2.2Inceptor数据模型Inceptor原理分区(Partition)•目的:减少不必要的全表扫描,提升查询效率•含义:将表按照某个或某几个字段(分区键)划分为更小的数据集•存储:分区数据存储在表目录下的子目录中,一个分区对应一个子目录,分区目录名为“分区键=value”•如何选择分区键-分区键通常高频出现在Select…Where条件查询中-避免产生过多小文件,只对离散字段进行分区,如日期、地域、类型等-由于HDFS不支持大量的子目录,有必要对分区数量进行预估-预估分区的数据量,避免数据倾斜CREATETABLEpm.employees(…nameSTRING,…/pm.db/employees/province=JS/city=NANJINGsalaryFLOAT,…/pm.db/employees/province=JS/city=SUZHOUaddressSTRUCT…)…/pm.db/employees/province=ZJ/city=HANGZHOUPARTITIONEDBY(stateSTRING,citySTRING);…/pm.db/employees/province=ZJ/city=NINGBO星环科技2.2Inceptor数据模型Inceptor原理分桶(Bucket)•含义:通过分桶键哈希取模(keyhashcode%N)的方式,将表或分区中的数据随机、均匀地分发到N个桶中,桶数N一般为质数,桶编号为0,1,…,N-13,6,9Bucket01,2,3,4,5,Mod3Bucket16,7,8,9,101,4,7,102,5,8Bucket2星环科技2.2Inceptor数据模型Inceptor原理分桶(Bucket)•存储-在表或分区目录下,每个桶存储为一个文件-桶文件的大小应控制在100~200MB之间(ORC表压缩后)-如果桶文件小于HDFSBlock,那么一个桶对应一个Block,否则会存储在多个Block中•作用-提高Join查询效率:如果两个表的Join列都做了分桶,且分桶数相同或成倍数,那么相同列值的记录会分到编号相同或有对应关系的桶中,这样就不用全表遍历,对应的桶Join就可以了-提高取样效率:从桶中直接抽取数据•用法-通常先分区后分桶-分桶键和分桶数在建表时确定,不允许更改星环科技2.2Inceptor数据模型Inceptor原理读时模式•含义:数据写入数据库时,不检查数据的规范性,而是在查询时再验证•特点-数据写入速度快,适合处理大规模数据-查询时处理尺度很宽松,尽可能恢复各种错误星环科技3chapterInceptor安装与配置Inceptor安装Inceptor配置Inceptor命令行3.1Inceptor安装Inceptor安装与配置安装方式•TDH部署过程中,选择Inceptor服务星环科技3.1Inceptor安装Inceptor安装与配置安装方式•TDH部署完成后,在TranswarpManager中单独添加Inceptor服务星环科技3.2Inceptor配置Inceptor安装与配置配置方式•TranswarpManagerInceptor配置星环科技3.3Inceptor命令行Inceptor安装与配置Beeline•Beeline是HiveServer2支持一个新命令行Shell,它是基于SQLLineCLI的JDBC客户端•InceptorServer2使用Beeline作为命令行工具•TDHClient中包含Beeline,安装后即可使用•先认证登录,然后直接输入并执行SQL语句/*无认证*/#beeline-ujdbc:hive2://:10000/eg:beeline-ujdbc:hive2://172.16.140.12:10000/default/*LDAP认证*/#beeline-u"jdbc:hive2://:10000/"-n-peg:beeline-u"jdbc:hive2://172.16.140.12:10000/default"-nhive-p123456/*Kerberos认证*/#beeline-u"jdbc:hive2://:10000/;principal="eg:beeline-u"jdbc:hive2://172.16.140.12:10000/default;principal=hive/tdh-12@TDH"星环科技4chapterInceptorSQLSQL数据类型SQLDDLSQLDML4.1SQL数据类型:基本数据类型InceptorSQL数据类型描述示例TINYINT1字节(8位)有符号整数,从-128到1271SMALLINT2字节(16位)有符号整数,从-32768到327671INT4字节(32位)有符号整数,从-2147483648到21474836471BIGINT8字节(64位)有符号整数,从-9223372036854775808到92233720368547758071FLOAT4字节单精度浮点数1.0DOUBLE8字节双精度浮点数1.0DECIMAL不可变的、任意精度的、有符号的十进制数1.012,1e+44BOOLEANTRUE/FALSETRUESTRING字符串'a',''a''VARCHAR可变长度的字符串'a',''a''DATE日期,格式:‘YYYY-MM-DD’,从'0001-01-01'到'9999-12-31''2014-01-01'时间戳,表示日期和时间,格式:'YYYY-MM-DDHH:MM:SS.fffffffff',可达到小数点后'2014-01-01TIMESTAMP9位精度(纳秒级别)00:00:00'INTERVAL一段以年、月或日为单位的时间INTERVAL'10'dayDAY/MONTH/YEAR星环科技4.1SQL数据类型:复杂数据类型InceptorSQL数据类型描述示例ARRAY一组有序字段,所有字段的数据类型必须相同ARRAY(1,2)一组无序的键/值对,键的类型必须是原生数据类型,值的类型可以是原生或复杂数据类MAPMAP(‘a’,1;’b’,2)型;同一个MAP的键的类型必须相同,值的类型也必须相同STRUCT一组命名的字段,字段的数据类型可以不同STRUCT(‘a’,1,1.0)星环科技4.1SQL数据类型:JDBCvs.InceptorInceptorSQLJDBCInceptorJDBCInceptorNullVoidRealFloatCHARStringFloatFloatVARCHARVarcharDoubleDoubleNVARCHARVarcharBinaryBinaryLongVarcharStringVarBinaryBinaryLongNVarcharStringLongVarBinaryBinaryNumericDecimalDateDateDecimalDecimalTimeTimestampBitBooleanTimeStampTimestampBooleanBooleanIntervarYMinterval_year_monthTinyIntTinyIntIntervalDSinterval_day_timeSmallIntSmallIntStructStructIntegerIntArrayArrayBigIntBigInt星环科技4.1SQL数据类型:Oraclevs.InceptorInceptorSQLOracleInceptorOracleInceptorCHARStringBinaryFloatFloatVARCHARVarcharDoubleDoubleNCHARVarchar/StringBinaryDoubleDoubleVarchar2StringCLOBBinaryNVarchar2StringNCLOBBinaryNumber(p,s)Decimal(p,s)BLOBBinaryNumberDecimal(38,0)BFileBinaryNumber(p)Decimal(p,0)DateDateDecimalDecimalTimestampTimestampBitBooleanTimestampWithTimezoneN/ABooleanBooleanTimestampWithLocalTimezoneN/ATinyIntTinyIntIntervalYearToMonthinterval_year_monthSmallIntSmallIntIntervalDayToSecondinterval_day_timeIntegerIntStructStructLongBigIntArrayArrayLongRawBigIntRowIdN/ARawBinaryURowIdN/AFloatFloat星环科技4.1SQL数据类型:DB2vs.InceptorInceptorSQLDB2InceptorDB2InceptorCHARStringFloatFloatNCHARStringDoubleDoubleVARCHARStringCLOBBinaryNVARCHARStringBLOBBinaryBooleanBooleanNCLOBBinarySmallIntSmallIntDBCLOBBinaryIntegerIntGraphicStringBigIntBigIntVarGraphicStringNumericDecimalDateDateDecimalDecimalTimestampTimestampDecFloatN/ATimeTimeRealFloatXMLN/A星环科技4.2SQLDDL:操作分类InceptorSQL数据库操作•Create/Drop/Alter/Use/Describe/ShowDatabase(s)表的基本操作•Create/Drop/Alter/Truncate/Describe/ShowTable(s)表的高级操作•分区-单值分区:静态分区、动态分区-范围分区•分桶函数操作•Create/Drop/Describe/ShowFunction(s)星环科技4.2SQLDDL:数据库操作InceptorSQL创建数据库CREATEDATABASE[IFNOTEXISTS][COMMENT''][WITHDBPROPERTIES(''='',...)];删除数据库(先删表后删库)DROPDATABASE[IFEXISTS];修改数据库属性ALTERDATABASESETDBPROPERTIES(''='',...);列出所有数据库SHOWDATABASES;切换数据库、查看数据库详情USE;DESCRIBE;星环科技4.2SQLDDL:表的基本操作InceptorSQL完整建表语句CREATE[TEMPORARY][EXTERNAL]TABLE[IFNOTEXISTS][.][([COMMENT''][,...])][COMMENT''][PARTITIONEDBY([COMMENT''][,...])][CLUSTEREDBY([,...])[SORTEDBY([ASC|DESC][,[ASC|DESC]...])]INTOBUCKETS][[ROWFORMAT][STOREDAS(TEXTFILE|ORC|CSVFILE)]|STOREDBY''[WITHSERDEPROPERTIES(<...>)]][LOCATION''][TBLPROPERTIES(''='',...)];星环科技4.2SQLDDL:表的基本操作InceptorSQL创建内表•通过自定义Schema来创建内表•存储在数据库目录下的同名子目录中•删除内表时,同时删除表中数据和元数据CREATETABLE[([,...])];•通过已存在的表或视图来创建内表,只复制Schema,不复制数据CREATETABLELIKE;•通过查询结果来创建内表,既复制Schema,又复制数据CREATETABLEASSELECT;星环科技4.2SQLDDL:表的基本操作InceptorSQL创建外表•创建外表时,一定要指定数据存储位置•删除外表时,只删除元数据,表中数据保留CREATEEXTERNALTABLE([,...])LOCATION'';创建临时表•临时表仅在当前Session可见,Session结束后即被删除,且不支持分区•如果临时表和永久表重名,在当前Session中该表名指向临时表,同名的永久表无法被访问CREATETEMPORARYTABLE([,...]);星环科技4.2SQLDDL:表的基本操作InceptorSQL删除表•对于内表,表的元数据和数据都会被删除;对于外表,只删除元数据DROPTABLE;修改表/*表重命名*/ALTERTABLERENAMETO;/*修改表属性*/ALTERTABLESETTBLPROPERTIES(''=''...);ALTERTABLESETSERDEPROPERTIES(''=''...);ALTERTABLESETLOCATION'';/*增加、删除、修改、替换列*/ALTERTABLEADDCOLUMNS([,...])ALTERTABLEDROP[COLUMN]ALTERTABLECHANGEALTERTABLEREPLACECOLUMNS([,...])星环科技4.2SQLDDL:表的基本操作InceptorSQL清空表•清空表中的数据,但不删除元数据,该操作用于内表,不能用于外表TRUNCATETABLE;查看表详情DESCRIBETABLE;列出当前数据库的所有表SHOWTABLES;星环科技4.2SQLDDL:表的高级操作InceptorSQL分区•分区表将数据按分区键的列值存储在表目录的子目录中,目录名=“分区键=键值”•Inceptor只支持TEXT表、ORC表、CSV表和Holodesk表的分区操作•单值分区:一个分区对应分区键的一个值•范围分区:一个分区对应分区键的一个范围(区间)psn.namepsn.levelpsn表目录小明A李雷A/inceptor1/user/hive/warehouse/default.db/psn/level=A韩梅梅A小红A单值分区目录李师师B/inceptor1/user/hive/warehouse/default.db/psn/level=B洪七公C黄蓉C/inceptor1/user/hive/warehouse/default.db/psn/level=C靖哥哥C星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:单值分区•创建单值分区时,分区键不能和表结构中的列重复,因为分区键值已存储在分区目录名中,分区数据中不包含分区键,否则会造成数据冗余CREATE[EXTERNAL]TABLE([,...])PARTITIONEDBY(,...)[CLUSTEREDBY...][ROWFORMAT][STOREDASTEXTFILE|ORC|CSVFILE][LOCATION''][TBLPROPERTIES(''='',...)];•单值分区可分为两类-单值静态分区:导入数据时,必须手动指定目标分区-单值动态分区:导入数据时,系统可以动态判断目标分区星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:单值分区•将数据写入静态分区/*覆盖写入*/INSERTOVERWRITETABLEPARTITION(=[,=,...])SELECT;/*追加写入*/INSERTINTOTABLEPARTITION(=[,=,...])SELECT;/*将HDFS数据或本地文件移动到分区目录下*/LOADDATA[LOCAL]INPATH'’[OVERWRITE]INTOTABLEPARTITION(=>[,=,...]);星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:单值分区•将数据写入动态分区/*开启动态分区支持,并设置最大分区数*/sethive.exec.dynamic.partition=true;sethive.exec.max.dynamic.partitions=2000;/*为动态分区键,为静态分区键*/INSERT(OVERWRITE|INTO)TABLEPARTITION([=,...,],[...,])SELECT;•一张表可同时被静态和动态分区键分区•建表时动态分区键应出现在所有静态分区键之后-因为HDFS上的动态分区目录下不能包含静态分区的子目录•向单值静态分区写入数据时,没有任何保证分区键的正确性,所以用户必须自己确保数据写入正确的分区星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:单值分区•将单个分区大小和分区数量控制在合理范围内-尽量减少使用多层分区,因为分区数量等于所有分区键的分区个数的乘积,这可能导致分区数量过多-对于日期时间类型的列,建议使用范围分区,因为使用单值分区会导致分区过多-选择分区键和向分区写入数据时,应预估分区数据量,尽量避免数据倾斜分区:添加、删除、重命名、清空分区ALTERTABLEADDPARTITION(=);ALTERTABLEDROPPARTITION(=);ALTERTABLEPARTITION(=)RENAMETOPARTITION(=);TRUNCATETABLEPARTITION(=);星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:范围分区•每个分区对应分区键的一个区间,凡是落在指定区间内的记录都被存储在对应的分区下•各范围分区按顺序排列,前一个分区的最大值即为后一个分区的最小值•创建范围分区CREATE[EXTERNAL]TABLE(,,...)PARTITIONEDBYRANGE(,...)(PARTITION[]VALUESLESSTHAN(),[PARTITION[]VALUESLESSTHAN(),...]PARTITION[]VALUESLESSTHAN(|MAXVALUE))[ROWFORMAT][STOREDASTEXTFILE|ORC|CSVFILE][LOCATION''][TBLPROPERTIES(''='',...)];星环科技4.2SQLDDL:表的高级操作InceptorSQL分区:范围分区•所有范围分区均需手工指定,可在建表时就添加分区,也可在建表后通过AlterTable添加或删除分区•分区的范围为前闭后开区间[最小值,最大值),即ValuesLessThan的含义•可将最后一个分区的最大值定义为MAXVALUE,关键词MAXVALUE代表分区键的最大值•支持以InsertInto/Overwrite…Select的形式向范围分区中写入数据,写入时无需像单值静态分区一样指定分区键的值,形式上类似于单值动态分区写入•不支持将文件直接导入(LoadData)范围分区•不支持范围分区和单值分区混用来进行多层分区星环科技4.2SQLDDL:表的高级操作InceptorSQL分桶•含义:按分桶键哈希取模的方式,将表中数据随机、均匀地分发到若干桶文件中•目的:通过改变数据的存储分布,提升取样、Join等特定任务的执行效率•创建分桶表-INTOBUCKETS设定桶的数量,SORTEDBY设定桶内排序,默认升序CREATE[EXTERNAL]TABLE([,...])][PARTITIONEDBY...]CLUSTEREDBY()[SORTEDBY([ASC|DESC][,[ASC|DESC]...])]INTOBUCKETS[ROWFORMAT][STOREDASTEXTFILE|ORC|CSVFILE][LOCATION''][TBLPROPERTIES(''='',...)];星环科技4.2SQLDDL:表的高级操作InceptorSQL分桶•将数据写入分桶表-分桶表在创建的时候只定义Schema,且数据写入时系统不会自动分桶,所以需要先人工分桶再写入-写入分桶表只能通过Insert,而不能通过Load,因为Load只导入文件,并不分桶-如果分桶表创建时定义了排序键,那么数据不仅要分桶,还要排序-如果分桶键和排序键不同,且按降序排列,使用Distributeby…Sortby分桶排序-如果分桶键和排序键相同,且按升序排列(默认),使用Clusterby分桶排序/*开启强制分桶,并设置Reduce任务数*/sethive.enforce.bucketing=true;setmapreduce.job.reduces=4;/*写入分桶表*/INSERT(OVERWRITE|INTO)TABLESELECT,,...FROMDISTRIBUTEBYSORTBY[ASC|DESC][,col_name[ASC|DESC],...][CLUSTERBY]星环科技4.2SQLDDL:表的高级操作InceptorSQL分桶•与分区键不同,分桶键必须是表结构中的列•分桶键和分桶数在建表时确定,不允许更改•ORC事务表必须分桶•每个桶的文件大小应在100~200MB之间(ORC表压缩后的数据)•通常先分区后分桶星环科技4.2SQLDDL:函数操作InceptorSQL创建、删除临时函数•Inceptor生命周期有效,并非Session有效,重启Inceptor后该函数失效/*添加jar包*/ADDJAR[S];CREATETEMPORARYFUNCTIONAS;DROPTEMPORARYFUNCTION[IFEXISTS];创建、删除永久函数CREATEPERMANENTFUNCTIONAS[USINGJAR|FILE|ARCHIVE''[,JAR|FILE|ARCHIVE'']];DROPPERMANENTFUNCTION[IFEXISTS];列出所有函数、查看函数详情SHOWFUNCTIONS;DESCRIBEFUNCTION;星环科技4.3SQLDMLInceptorSQLSQLDML类型•数据导入-Load-Insert…Select•数据导出:Insert•查询:SelectSQLDML注意事项•常见的DML只能用于ORC事务表、Hyperbase表-例如:InsertvaluesInto、Delete、Update•如果写入普通表,则将指定的文件或查询结果放入表对应的目录中,该目录不能有子目录•如果写入分区表,则必须将文件放入对应的分区目录中星环科技4.3SQLDML:数据导入InceptorSQL数据预处理•编码-文件格式要求:文件编码为UTF-8,\n为换行符,否则需要预处理-如果是ASCii码,进入外表中文显示不正确/*查看文件编码类型和换行符*/#file$filename/*方法一:提前处理,先转码再上传iconv是转码工具,-f源编码格式,-t目标编码格式*/#iconv-fgbk-tutf-8$sourceFile>$targetFile/*方法二:先建外表后处理先上传文件,建立外表后中文为乱码,执行以下语句后,再读外表中文显示正确*/ALTERTABLESETSERDEPROPERTIES('serialization'='GBK');星环科技4.3SQLDML:数据导入InceptorSQL数据预处理•换行符-Windows文件用\r\n换行,而Unix文件用\n换行,所以必须处理Windows换行符,将\r\n转换为\n/*方法一:利用dos2unix工具,将Dos文件转换为Unix文件*/#dos2unix$fileName/*方法二:利用vi或vim,删除Windows文件中的\r,将所有\r替换为空*/#vim$fileName:%s/\r//g星环科技4.3SQLDML:数据导入InceptorSQL将文件导入表或分区•将文件中的数据导入已存在的表或分区•仅将数据文件移动到表或分区的目录中,不会对数据进行任何处理,如分桶、排序•不支持动态分区导入•不推荐使用Load导入数据:在安全模式下的权限设置步骤较多•推荐的数据导入方法:先建外表,再将外表Location设置为数据文件所在目录•INPATH选项-是文件存储路径,如果标注LOCAL,指向本地磁盘路径,不标则指向HDFS路径-既可指向文件也可指向目录,系统会将指定文件或目录下所有的文件移入表内-是HDFS路径时,执行操作的用户必须是的Owner,同时Inceptor用户必须有读写权限LOADDATA[LOCAL]INPATH'’[OVERWRITE]INTOTABLE[PARTITION(=,...)];星环科技4.3SQLDML:数据导入InceptorSQL将查询结果导入表或分区•单值静态分区导入INSERT(OVERWRITE|INTO)TABLEPARTITION(=[,=,...])SELECT;•单值动态分区导入-静态分区存在的问题是需要手工输入大量的Insert语句-动态分区写入无需手工指定分区,而是让系统根据查询结果自动推断出分区/*开启动态分区支持,并设置最大分区数*/sethive.exec.dynamic.partition=true;sethive.exec.max.dynamic.partitions=2000;/*为动态分区键,为静态分区键*/INSERT(OVERWRITE|INTO)TABLEPARTITION([=,...,],[...,])SELECT;星环科技4.3SQLDML:数据导出InceptorSQL将数据导出到本地或HDFS•将查询结果导出到本地目录,可能生成多个文件•与导入数据不一样,不能用InsertInto导出数据,只能用InsertOverwrite-标注LOCAL代表导出到本地磁盘,不标代表导出到HDFS-DIRECTORY指定数据导出的文件目录-ROWFORMAT指定文件的行格式,STOREDAS指定文件格式,不指定使用默认值INSERTOVERWRITE[LOCAL]DIRECTORYSELECT[ROWFORMAT:DELIMITED[FIELDSTERMINATEDBYchar[ESCAPEDBYchar]][COLLECTIONITEMSTERMINATEDBYchar][MAPKEYSTERMINATEDBYchar][LINESTERMINATEDBYchar][NULLDEFINEDASchar]][STOREDASTEXTFILE|ORC|CSVFILE]星环科技4.3SQLDML:数据查询InceptorSQLSelect查询•过滤:Where、Having•排序:OrderBy、SortBy•聚合:GroupBy、DistributeBy、ClusterBy•连接:JoinSELECT[ALL|DISTINCT],,...FROM[.][WHERE][GROUPBY][HAVING][ORDERBY[ASC|DESC][,col_name[ASC|DESC],...]][CLUSTERBY|[DISTRIBUTEBY][SORTBY[ASC|DESC][,col_name[ASC|DESC],...]]][LIMIT(M,)N|[OFFSETMROWSFETCHNEXT|FIRST]NROWSONLY];星环科技4.3SQLDML:数据查询InceptorSQL过滤•Where:对全表数据进行过滤,即在查询结果分组之前,将不符合条件的数据过滤掉,且条件中不能包含聚合函数•Having:对GroupBy产生的分组进行过滤,即在查询结果分组之后,将不符合条件的组过滤掉,且条件中常包含聚合函数•执行次序:WhereGroupByHaving/*Where全表过滤*/SELECT*FROMuser_infoWHEREreg_date<20120000ANDlevel='A'ORlevel='B';SELECT*FROMuser_infoWHEREreg_dateBETWEEN20100000AND20120000;SELECTnameFROMuser_infoWHERElevelIN('A','B','C'',‘D');SELECTnameFROMuser_infoWHERElevelNOTIN('A','B','C'',‘D');/*Having分组过滤*/SELECTname,avg(age)FROMuser_infoWHEREreg_date<20100000GROUPBYlevelHAVINGBYavg(age)<30星环科技4.3SQLDML:数据查询InceptorSQL排序•OrderBy(全局排序)-功能:将所有数据交给一个Reduce任务计算,实现查询结果的全局排序-缺点:如果数据量很大,只有一个Reduce会耗费大量时间SELECT,,...FROMORDERBY[ASC|DESC][,col_name[ASC|DESC],...]•SortBy(局部排序)-功能:在每个Reduce任务中对数据进行排序,即局部排序-当启动多个Reduce任务时,OrderBy输出一个文件且全局有序,SortBy输出多个文件且局部有序SELECT,,...FROMSORTBY[ASC|DESC][,col_name[ASC|DESC],...]星环科技4.3SQLDML:数据查询InceptorSQL聚合•DistributeBy-通过哈希取模的方式,将DistributeBy列值相同的数据发送给同一个Reduce任务,实现数据按指定列聚合,同时实现分桶-通常与SortBy合并使用,实现先聚合后排序,且DistributeBy必须在SortBy之前SELECT,,...FROMDISTRIBUTEBY[SORTBY[ASC|DESC][,col_name[ASC|DESC],...]]•ClusterBy-如果DistributeBy列和SortBy列完全相同,且按升序排列,那么ClusterBy=DistributeBy…SortBySELECT,,...FROMCLUSTERBY星环科技4.3SQLDML:数据查询InceptorSQL连接Join•等价连接-ON子句中的连接条件必须是等值条件-ON子句不能包含OR、BETWEEN、INSELECT,,...FROMJOINJOIN,...ON•不等价连接-不等价连接条件只能出现在Where子句中-不等价连接与笛卡尔积类似,很容易返回大量结果,执行这样的操作必须格外小心SELECT,,...FROMJOINJOIN,...ONWHERE星环科技5chapterInceptorPL/SQLPL/SQL简介PL/SQL基础5.1PL/SQL简介InceptorPL/SQLProcedureLanguage&StructuredQueryLanguage一种具有控制功能的数据库程序设计语言优点•过程化•模块化•运行错误可处理•提供大量内置程序包方言方言类型是否默认Beenline设置命令!setplsqlClientDialectoracleOracle是setplsql.server.dialect=oracle;!setplsqlClientDialectdb2DB2否setplsql.server.dialect=db2;星环科技5.2PL/SQL基础InceptorPL/SQLPL/SQL数据类型•%type属性-基于变量或数据库表的列定义一个变量。该变量的类型与被参照变量或列的类型相同;当被参照变量的类型改变之后,新定义变量的类型也会随之改变•%rowtype属性-基于数据库表定义一个记录型变量。该变量的字段名和字段类型就是被参照表的字段名和字段类型;当被参照表的结构发生变化时,新定义变量也会发生改变•标量类型-用于保存单个值,Inceptor支持的标量类型有Int、String、Double、Boolean等•复合类型-如:Record、Collection等星环科技5.2PL/SQL基础InceptorPL/SQLPL/SQL语句块•既可是一个没有名字的语句块,也可是一个命名的语句块(存储过程和函数)•由四个基本部分组成:声明、执行体开始、异常处理、执行体结束/*声明(可选)*/DECLAREtransidSTRING/*执行体开始(必要)*/BEGINSELECTtrans_idintotransidfromtransactionswhereacc_num=6513065DBMS_OUTPUT.put_line(transid)/*异常处理(可选)*/EXCEPTION--WHENtoo_many_rowsTHENDBMS_OUTPUT.put_line('toomanyrows')/*执行体结束(必要)*/END;星环科技5.2PL/SQL基础InceptorPL/SQLPL/SQL存储过程/*创建存储过程*/CREATEORREPLACEPROCEDUREhello_world()ISDECLAREl_messageSTRI
/
本文档为【TDH大数据平台培训_第11讲_分布式SQL引擎Inceptor】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索