Indexing 在Phoenix中创建异步全局索引

Indexing 在Phoenix中创建异步全局索引,indexing,hbase,phoenix,Indexing,Hbase,Phoenix,我在创建以下异步索引时遇到问题 用于创建索引的命令: CREATE INDEX IDX_TABLE_NAME_START_TIME ON SCHEMANAME.TABLE_NAME(START_TIME) INCLUDE (END_TIME) ASYNC; 用于启动IndexTool的命令: bin/hbase org.apache.phoenix.mapreduce.index.IndexTool --schema SCHEMANAME --data-table TABLE_NAME --i

我在创建以下异步索引时遇到问题

用于创建索引的命令:

CREATE INDEX IDX_TABLE_NAME_START_TIME ON SCHEMANAME.TABLE_NAME(START_TIME) INCLUDE (END_TIME) ASYNC;
用于启动IndexTool的命令:

bin/hbase org.apache.phoenix.mapreduce.index.IndexTool --schema SCHEMANAME --data-table TABLE_NAME --index-table IDX_TABLE_NAME_START_TIME --output-path ASYNC_IDX_TABLE_NAME_START_TIME_HFILES
并获得以下异常:

Error: java.lang.RuntimeException: java.sql.SQLException: ERROR 201 (22000): Illegal data. CHAR types may only contain single byte characters (7ff9d�2Z03725157354996cc593-a)
        at org.apache.phoenix.mapreduce.index.PhoenixIndexImportMapper.map(PhoenixIndexImportMapper.java:122)
        at org.apache.phoenix.mapreduce.index.PhoenixIndexImportMapper.map(PhoenixIndexImportMapper.java:48)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
表是使用以下命令创建的:

CREATE TABLE SCHEMANAME.TABLE_NAME(
  ID CHAR (36) NOT NULL PRIMARY KEY,
  START_TIME DATE,
  END_TIME DATE,
  SERVICE VARCHAR
);
我还尝试向表中插入新数据-upsert成功,索引表也有新行

凤凰版本:4.7.0.2.5.0.0-1245
Hbase版本:1.1.2


异常的原因是什么?有什么方法可以修复它吗?

我认为它在抱怨CHAR(36)。尝试使用varchar,看看它是否能解决您看到的问题。是否有任何解决方法可以让它在当前表中工作?它已经有数亿行了!更新:使用varchar确实有效,我认为这是在抱怨CHAR(36)。尝试使用varchar,看看它是否能解决您看到的问题。是否有任何解决方法可以让它在当前表中工作?它已经有数亿行了!更新:使用varchar确实有效