Bash 如何将配置单元服务器操作中的动态日期作为参数传递

Bash 如何将配置单元服务器操作中的动态日期作为参数传递,bash,hadoop,hive,oozie,hue,Bash,Hadoop,Hive,Oozie,Hue,在Oozie中,我在色调中使用了蜂巢动作,同样的动作我使用参数选项来提供日期参数。在这里,我想提供动态日期参数,如昨天日期和前天。如何生成这些日期?以及如何作为参数传递 我的HQL是: CREATE TABLE IF NOT EXISTS tmp_table as select * from emptable where day>=${fromdate} and day<=${todate} 配置单元动作参数变为fromdate=/user/manishs/Oozie/fil

在Oozie中,我在色调中使用了蜂巢动作,同样的动作我使用参数选项来提供日期参数。在这里,我想提供动态日期参数,如昨天日期和前天。如何生成这些日期?以及如何作为参数传递

我的HQL是:

CREATE TABLE IF NOT EXISTS tmp_table as 
select * from emptable 
where day>=${fromdate}  and day<=${todate}
配置单元动作参数变为
fromdate=/user/manishs/Oozie/filter.sh

但是,该方法不起作用,并给出了例外情况: 错误:编译语句时出错:失败:ParseException行4:11无法识别表达式规范中“/”用户“/”附近的输入(状态=42000,代码=40000)

注意:
如果我将日期传递为:fromdate='2015-08-01',它将工作并给出结果

我的问题是如何在配置单元服务器操作中传递动态日期作为参数。 或者是向查询传递动态筛选器的任何方法。

试试这个

fromdate = $(sh /user/manishs/Oozie/filter.sh)
filter.sh应该在给定的位置

试试这个

fromdate = $(sh /user/manishs/Oozie/filter.sh)
filter.sh应该在给定的位置

试试这个

fromdate = $(sh /user/manishs/Oozie/filter.sh)
filter.sh应该在给定的位置

试试这个

fromdate = $(sh /user/manishs/Oozie/filter.sh)

filter.sh应该在给定的位置

Oozie是一个调度程序,对吗?那么,为什么不使用内置的EL函数来计算“今天”和“昨天”,并将它们传递给Hive动作呢

在协调器脚本中,假设您使用的是洛杉矶时区,它应该看起来像

<coordinator-app .......>
  <action>
    <app-path>/path/to/the/worklow/definition</app-path>
    <configuration>
      <property>
        <name>today</name>
        <value>${coord:formatTime(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), 'yyyy-MM-dd')}</value>
      </property>
      <property>
        <name>yesterday</name>
        <value>${coord:formatTime(coord:dateOffset(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), -1, 'DAY'), 'yyyy-MM-dd')}</value>
      </property>
    </configuration>
  </action>
</coordinator-app>

6.7.3。coord:nominalTime()EL函数

6.7.4。coord:actualTime()EL函数

6.9.1。coord:dateOffset(字符串baseDate、int实例、字符串时间单位)EL函数

6.9.2。坐标:dateTzOffset(字符串baseDate,字符串时区)EL函数

6.9.3。coord:formatTime(字符串ts、字符串格式)EL函数


好吧,也许你不能用色调。但是色调编辑器有太多的限制,你无论如何也不能用它做太多事情。

Oozie是一个调度程序,对吗?那么,为什么不使用内置的EL函数来计算“今天”和“昨天”,并将它们传递给Hive动作呢

在协调器脚本中,假设您使用的是洛杉矶时区,它应该看起来像

<coordinator-app .......>
  <action>
    <app-path>/path/to/the/worklow/definition</app-path>
    <configuration>
      <property>
        <name>today</name>
        <value>${coord:formatTime(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), 'yyyy-MM-dd')}</value>
      </property>
      <property>
        <name>yesterday</name>
        <value>${coord:formatTime(coord:dateOffset(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), -1, 'DAY'), 'yyyy-MM-dd')}</value>
      </property>
    </configuration>
  </action>
</coordinator-app>

6.7.3。coord:nominalTime()EL函数

6.7.4。coord:actualTime()EL函数

6.9.1。coord:dateOffset(字符串baseDate、int实例、字符串时间单位)EL函数

6.9.2。坐标:dateTzOffset(字符串baseDate,字符串时区)EL函数

6.9.3。coord:formatTime(字符串ts、字符串格式)EL函数


好吧,也许你不能用色调。但是色调编辑器有太多的限制,你无论如何也不能用它做太多事情。

Oozie是一个调度程序,对吗?那么,为什么不使用内置的EL函数来计算“今天”和“昨天”,并将它们传递给Hive动作呢

在协调器脚本中,假设您使用的是洛杉矶时区,它应该看起来像

<coordinator-app .......>
  <action>
    <app-path>/path/to/the/worklow/definition</app-path>
    <configuration>
      <property>
        <name>today</name>
        <value>${coord:formatTime(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), 'yyyy-MM-dd')}</value>
      </property>
      <property>
        <name>yesterday</name>
        <value>${coord:formatTime(coord:dateOffset(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), -1, 'DAY'), 'yyyy-MM-dd')}</value>
      </property>
    </configuration>
  </action>
</coordinator-app>

6.7.3。coord:nominalTime()EL函数

6.7.4。coord:actualTime()EL函数

6.9.1。coord:dateOffset(字符串baseDate、int实例、字符串时间单位)EL函数

6.9.2。坐标:dateTzOffset(字符串baseDate,字符串时区)EL函数

6.9.3。coord:formatTime(字符串ts、字符串格式)EL函数


好吧,也许你不能用色调。但是色调编辑器有太多的限制,你无论如何也不能用它做太多事情。

Oozie是一个调度程序,对吗?那么,为什么不使用内置的EL函数来计算“今天”和“昨天”,并将它们传递给Hive动作呢

在协调器脚本中,假设您使用的是洛杉矶时区,它应该看起来像

<coordinator-app .......>
  <action>
    <app-path>/path/to/the/worklow/definition</app-path>
    <configuration>
      <property>
        <name>today</name>
        <value>${coord:formatTime(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), 'yyyy-MM-dd')}</value>
      </property>
      <property>
        <name>yesterday</name>
        <value>${coord:formatTime(coord:dateOffset(coord:dateTzOffset(coord:nominalTime(), "America/Los_Angeles"), -1, 'DAY'), 'yyyy-MM-dd')}</value>
      </property>
    </configuration>
  </action>
</coordinator-app>

6.7.3。coord:nominalTime()EL函数

6.7.4。coord:actualTime()EL函数

6.9.1。coord:dateOffset(字符串baseDate、int实例、字符串时间单位)EL函数

6.9.2。坐标:dateTzOffset(字符串baseDate,字符串时区)EL函数

6.9.3。coord:formatTime(字符串ts、字符串格式)EL函数


好吧,也许你不能用色调。但是色调编辑器有太多的限制,你无论如何也不能做太多。

Per建议我使用coord:nominalTime()EL函数作为${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'DAY'),'yyyy-MM-dd'))并正确构建查询。但是,在执行过程中出现异常。错误:无法打开新会话:java.lang.RuntimeException:java.lang.RuntimeException:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient(state=,code=0)没有当前连接您在
部分下运送
hive site.xml
?配置单元元存储的URL在那里定义。是的,我使用了Hive-site.xml,异常是错误:编译语句时出错:失败:SemanticException org.apache.thrift.transport.ttTransportException:java.net.SocketTimeoutException:Read timeout(state=42000,code=40000),因为我建议使用coord:nominalTime()EL函数作为${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'DAY'),'yyyy-MM-dd'))和正确生成查询。但是在执行过程中遇到异常。错误:无法打开新会话:java.lang.RuntimeException:java.lang.RuntimeException:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient(状态=,代码=0)没有当前连接ID您在
部分下发布
hive site.xml
?hive元存储的URL在那里定义。是的,我使用了hive-site.xml,异常是错误:编译语句时出错:失败:SemanticException org.apache.thrift.transport.ttTransportException:java.net.SocketTimeoutException:Read timeout(state=42000,code=40000)根据建议,我使用coord:nominalTime()EL函数作为${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'DAY'),'yyyy-MM-dd'))并正确生成查询。但在执行过程中出现异常。错误:无法打开新会话:java.lang.Runti