1.安装phoenix

在界面上设置Phoenix的parcel包:

http://52.11.56.155:7180/cmf/settings?groupKey=config.scm.parcel.display_group&groupParent=

添加一个Remote Parcel Repository URLs url:http://archive.cloudera.com/cloudera-labs/phoenix/parcels/1.0/

CM会自动发现新的parcel,然后点击Download,Distribute and Active。重启集群

2.进入到某台服务器上,查看phoenix的安装路径

[root@ip---- ~]# cd /opt/cloudera/parcels/CLABS_PHOENIX
[root@ip---- phoenix]# ls
bin dev examples lib phoenix-4.3.-clabs-phoenix-1.0.-client.jar phoenix-4.3.-clabs-phoenix-1.0.-server.jar phoenix-4.3.-clabs-phoenix-1.0.-server-without-antlr.jar

bin目录下为可执行文件,examples目录下为一些样例

3.导入CSV格式的表

CSV文件为/root/ceb/cis_cust_imp_info.csv,内容如下:

,,BR01,2000.01
,,BR01,2000.02
,,BR02,2000.03

定义一个表结构的文件/root/ceb/cis_cust_imp_info.sql,内容如下,

CREATE TABLE IF NOT EXISTS cis_cust_imp_info(
statistics_dt varchar(50),
cust_id varchar(50),
open_org_id varchar(50),
assert9_bal decimal(18,2),
CONSTRAINT pk PRIMARY KEY (statistics_dt, cust_id)
);

注意最后的分号是必须的。

运行命令,导入CSV

[root@ip---- phoenix]# bin/psql.py 172.31.25.244 /root/ceb/cis_cust_imp_info.sql /root/ceb/cis_cust_imp_info.csv
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
// :: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
// :: WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
no rows upserted
Time: 0.259 sec(s) csv columns from database.
CSV Upsert complete. rows upserted
Time: 0.067 sec(s)

在hbase shell中进行验证:

hbase(main)::> list
TABLE
CIS_CUST_IMP_INFO
SYSTEM.CATALOG
SYSTEM.SEQUENCE
SYSTEM.STATS
row(s) in 0.2650 seconds => ["CIS_CUST_IMP_INFO", "SYSTEM.CATALOG", "SYSTEM.SEQUENCE", "SYSTEM.STATS"]
hbase(main)::> scan 'CIS_CUST_IMP_INFO'
ROW COLUMN+CELL
\x00100010001001 column=:ASSERT9_BAL, timestamp=, value=\xC2\x15\x01\x02
\x00100010001001 column=:OPEN_ORG_ID, timestamp=, value=BR01
\x00100010001001 column=:_0, timestamp=, value=
\x00100010001002 column=:ASSERT9_BAL, timestamp=, value=\xC2\x15\x01\x03
\x00100010001002 column=:OPEN_ORG_ID, timestamp=, value=BR01
\x00100010001002 column=:_0, timestamp=, value=
\x00100010001003 column=:ASSERT9_BAL, timestamp=, value=\xC2\x15\x01\x04
\x00100010001003 column=:OPEN_ORG_ID, timestamp=, value=BR02
\x00100010001003 column=:_0, timestamp=, value=
row(s) in 0.1840 seconds

4.以MR的方式导入大量CSV文件

[root@ip---- phoenix]# hadoop jar phoenix-4.3.-clabs-phoenix-1.0.-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table cis_cust_imp_info --input /root/ceb/cis_cust_imp_info.csv --zookeeper 172.31.25.244

发生错误:

java.util.concurrent.ExecutionException: java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString cannot access its superclass com.google.protobuf.LiteralByteString
at java.util.concurrent.FutureTask.report(FutureTask.java:)
at java.util.concurrent.FutureTask.get(FutureTask.java:)
at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:)
at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.getTable(ConnectionQueryServicesImpl.java:)
at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:)
at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:)
at org.apache.phoenix.schema.MetaDataClient.getCurrentTime(MetaDataClient.java:)
at org.apache.phoenix.compile.StatementContext.getCurrentTime(StatementContext.java:)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:)
at org.apache.phoenix.jdbc.PhoenixStatement$.call(PhoenixStatement.java:)
at org.apache.phoenix.jdbc.PhoenixStatement$.call(PhoenixStatement.java:)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:)
at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:)
at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:)
at org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.getColumns(PhoenixDatabaseMetaData.java:)
at org.apache.phoenix.util.CSVCommonsLoader.generateColumnInfo(CSVCommonsLoader.java:)
at org.apache.phoenix.mapreduce.CsvBulkLoadTool.buildImportColumns(CsvBulkLoadTool.java:)
at org.apache.phoenix.mapreduce.CsvBulkLoadTool.loadData(CsvBulkLoadTool.java:)
at org.apache.phoenix.mapreduce.CsvBulkLoadTool.run(CsvBulkLoadTool.java:)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:)
at org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
at java.lang.reflect.Method.invoke(Method.java:)
at org.apache.hadoop.util.RunJar.run(RunJar.java:)
at org.apache.hadoop.util.RunJar.main(RunJar.java:)
Caused by: java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString cannot access its superclass com.google.protobuf.LiteralByteString

网上搜索,发现是由于HBASE的一个bug,解决方法是:

[root@ip---- phoenix]# cd /opt/cloudera/parcels/CDH/lib/hadoop
ln -s /opt/cloudera/parcels/CDH-5.4.-.cdh5.4.5.p0./lib/hbase/lib/hbase-protocol-1.0.-cdh5.4.5.jar hbase-protocol-1.0.-cdh5.4.5.jar

重新运行导入命令,发现如下错误:

// :: WARN security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:)

原因是/user目录权限问题,用hdfs用户重新跑一遍,发生错误。用chmod 修改/user为777

sudo -u hdfs hdfs dfs -chmod  /user
sudo -u hdfs hadoop jar phoenix-4.3.-clabs-phoenix-1.0.-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table cis_cust_imp_info --input /root/ceb/cis_cust_imp_info.csv --zookeeper 172.31.25.244

15/09/04 11:06:05 ERROR mapreduce.CsvBulkLoadTool: Import job on table=CIS_CUST_IMP_INFO failed due to exception:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://ip-172-31-25-243.us-west-2.compute.internal:8020/root/ceb/cis_cust_imp_info.csv
15/09/04 11:06:05 INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x14f97b7df1400a4

原来用MR模式跑,文件需要放到HDFS上

这时MR运行可以顺利完成,HFile顺利生产,但是在loadIncremental环境卡住了。原因在于load到hbase中的表属于hbase:hbase,但生产的HFile文件属于当前用户和组。所以以hbase用户运行

sudo -u hbase hadoop jar phoenix-4.3.-clabs-phoenix-1.0.-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table cis_cust_imp_info --input /root/ceb/cis_cust_imp_info.csv --zookeeper 172.31.25.244

顺利搞定!

CDH5.4.5运行Phoenix导入CSV文件的更多相关文章

  1. Postman系列四:Postman接口请求设置环境变量和全局变量、测试沙箱和测试断言、测试集运行与导入数据文件

    一:Postman中接口请求设置环境变量和全局变量 全局变量和环境变量可以通过Pre-request Script和Tests设置,会在下面测试沙箱和测试断言中讲到. 全局变量的设置:官网参考http ...

  2. Oracle数据库导入csv文件(sqlldr命令行)

    1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...

  3. ACCESS导入CSV文件出现乱码解决办法

    在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...

  4. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中   将数 ...

  5. oracle导入csv文件

    oracle导入csv文件: 1.建好对应的表和字段: 2.新建test.ctl文件,用记事本编辑写入: load data infile 'e:\TB_KC_SERV.csv' --修改对应的文件路 ...

  6. python导入csv文件时,出现SyntaxError

    背景 np.loadtxt()用于从文本加载数据. 文本文件中的每一行必须含有相同的数据. *** loadtxt(fname, dtype=<class 'float'>, commen ...

  7. R: 导入 csv 文件,导出到csv文件,;绘图后导出为图片、pdf等

    ################################################### 问题:导入 csv 文件 如何从csv文件中导入数据,?参数怎么设置?常用参数模板是啥? 解决方 ...

  8. python导入csv文件出现SyntaxError问题分析

    python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...

  9. neo4j导入csv文件

    neo4j导入csv文件 关于neo4j的安装 官网和网上博客提供了n中安装的方法,这里不再赘述: 普通安装: https://cloud.tencent.com/developer/article/ ...

随机推荐

  1. BW顾问必需要清楚的:时间相关数据建模场景需求分析

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. 数据源增量处理(Delta Proess)三大属性:Recod Mode、Delta Type、Serialization

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. LBWE更新模式切换问题:缓存清理

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. java内存泄漏的经典案例

    这篇文章主要介绍了Java中典型的内存泄露问题和解决方法,典型的内存泄露例子是一个没有实现hasCode和 equals方法的Key类在HashMap中保存的情况,可以通过实现Key类的equals和 ...

  5. WebUpLoder 能自动预览,能多实例,包括后台demo

    样式在网上找的.样子: 懒得写别的了,代码里面我写的注释挺详细的:https://github.com/zhangsai521314/WebUpLoder 写文不易,转载请注明出处:http://ww ...

  6. Deep Learning 22:总结一些deep learning的基本知识

    1.交叉熵代价函数 2.正则化方法:L1和L2 regularization.数据集扩增.dropout 3. 数据预处理 4.机器学习算法中如何选取超参数:学习速率.正则项系数.minibatch ...

  7. BWT压缩算法(Burrows-Wheeler Transform)

    参考: BWT (Burrows–Wheeler_transform)数据转换算法 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transfor ...

  8. hdu acm 简单暴力1004

    字符串匹配函数strcmp 直接使用来判断两字符串是否完全相等 用数组存每个单词的个数时  初始化为零就错 初始化为一时就正确  也不知道为什么

  9. sphinx全文检索 安装配置和使用

    公司项目刚刚导入大量产品数据,然后发现网站的产品搜索很卡,原本是原生sql的like来做模糊搜索,数据量20W的时候还可以接受,但是上百万就很卡了,所以需要做优化. 经过考虑,打算采用全文检索 sph ...

  10. centos6.5安装lnmp环境

    1.安装nignx的源,默认cenots6没有的. rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-cent ...