Составной уникальный ключ с использованием инструмента Solr Morphline Mapreduce

Я довольно плохо знаком с Solr. Поэтому, пожалуйста, прости меня, если я получу неправильную терминологию. Я пытаюсь создать составной уникальный ключ, используя morphline для моего индекса Solr. Вот ключи, которые я хочу в составном уникальном ключе.

<field name="table_name" type="string" indexed="true" stored="true" required="true" default="0" />
<field name="database_name" type="string" indexed="true" stored="true" required="true" default="0" />
<field name="refreshtime" type="string" indexed="true" stored="true" required="true" default="0" />

Вот как определяется мой уникальный ключ

 <field name="id" type="string" indexed="true" stored="true" required="true" 
multiValued="false" />
    <uniqueKey>id</uniqueKey>

Вот как я пытаюсь создать составной уникальный ключ через морфлин. Я хочу получить уникальные записи, основанные на имени таблицы, имени базы данных и времени обновления.

morphlines : [
  {
    id : test_catalog
    importCommands : ["org.kitesdk.**", "org.apache.solr.**"]
    commands : [
      {
        readCSV {
          separator : ","
          columns : [table_name,database_name,create_time,location,table_type,partitions,transient_ddltime,refreshtime,id]
          #ignoreFirstLine : true
          quoteChar : ""
          charset : UTF-8
        }
      }
      {
        generateSolrSequenceKey{
          baseIdField : table_name","database_name","refreshtime
          solrLocator : ${SOLR_LOCATOR}
        }
      }

Я получаю следующую ошибку

18/07/24 09:37:09 INFO mapreduce.Job: Task Id : attempt_1531396508486_0533_m_000001_2, Status : FAILED
Error: org.kitesdk.morphline.api.MorphlineRuntimeException: org.kitesdk.morphline.api.MorphlineRuntimeException: Record field table_name,database_name must not be null as it is needed as a basis for a unique key for solr doc: {base_id=[hdfs://hrbdevcdh:8020/user/na1028913/watch-dog-data/catalog_2018-07-16_12-22-38-PM.csv], create_time=[2016-07-20 07:21:03], database_name=[am], file_download_url=[hdfs://hrbdevcdh:8020/user/na1028913/watch-dog-data/catalog_2018-07-16_12-22-38-PM.csv], file_group=[na1028913], file_host=[hrbdevcdh], file_last_modified=[1532376165610], file_length=[86437], file_name=[catalog_2018-07-16_12-22-38-PM.csv], file_owner=[na1028913], file_path=[/user/na1028913/watch-dog-data/catalog_2018-07-16_12-22-38-PM.csv], file_permissions_group=[rw-], file_permissions_other=[r--], file_permissions_stickybit=[false], file_permissions_user=[rw-], file_port=[8020], file_scheme=[hdfs], file_upload_url=[hdfs://hrbdevcdh/user/na1028913/watch-dog-data/catalog_2018-07-16_12-22-38-PM.csv], location=[hdfs://hrbdevcdh/user/hive/warehouse/am.db/appointment], partitions=[0], refreshtime=[2018-06-29 14:42:40], table_name=[appointment], table_type=[MANAGED_TABLE], transient_ddltime=[2016-07-20 07:21:04]}
        at org.kitesdk.morphline.base.FaultTolerance.handleException(FaultTolerance.java:73)
        at org.apache.solr.hadoop.morphline.MorphlineMapRunner.map(MorphlineMapRunner.java:220)
        at org.apache.solr.hadoop.morphline.MorphlineMapper.map(MorphlineMapper.java:86)
        at org.apache.solr.hadoop.morphline.MorphlineMapper.map(MorphlineMapper.java:54)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

Пожалуйста, помогите мне решить эту проблему. заранее спасибо

0 ответов

Другие вопросы по тегам