shell - 如何在配置单元中使用文件中的列名
问题描述
对直线和大数据的东西非常陌生。
如何在 Shell 脚本中使用 Beeline 中的列名。例如
ColNames=Emp_id,Emp_name,Emp_City
Tbl_name=Employee
DB_Name=HR_Dept
Select $ColNames from $Tbl_name.$DB_Name;
1.是否可以在 Beeline/Hive 中使用和 2.我可以将文件放在 Linux 框中吗,让我们说 columnsnamesonly.txt 并从脚本中调用直线中的值
Columnnamesonly.txt
empid,emp_name,emp_city
select $/tmp/colnamesonly.txt from Employee.hr_dept;
很抱歉这个基本问题。无论是否可能,我都无法在任何地方找到答案。
解决方案
如果我正确理解您的问题,是的,您可以传入保存在文本文件中的变量。**以下假设您已经在使用 beeline 运行 hive。
将变量添加到新的 hiverc 文件中
- 打开 hiverc 文件进行编辑。使用 vim 这可能看起来像:
vim ~/.hiverc
- 通过为您想要的每个变量添加一行来编辑文件:(
set hivevar:variable_name=column_one;
如果您不熟悉 vim,我建议阅读一些基本材料或使用其他东西来编辑文件) - 将文件保存到您想要的任何路径。vim 命令看起来像
:w filepath/newhivercfile
在你的配置单元脚本中调用你的变量
- 编辑您的配置单元脚本,在需要的地方添加变量,例如:
SELECT ${variable_name} FROM table;
让我们将其保存在filepath/script.hql
使用您的变量运行脚本!
- 使用常规直线运行您的配置单元脚本,但添加:
-i filepath/newhivercfile
这将 hive 指向您在步骤 1 中创建的 hiverc 文件-f filepath/script.hql
这将运行您在步骤 4 中创建的配置单元脚本。
您的直线查询将如下所示:beeline -i filepath/newhivercfile -u jdbc:hive2://hiveserver2.com:10000 $USER org.apache.hive.jdbc.HiveDriver -f filepath/script.hql
推荐阅读
- java - 不确定为什么这个特定的测试用例不适用于合并二叉树
- r - 如何将 ggplot 的参数传递给重叠函数?
- webpack - 在 create-react-app (CRA) 中获取总包大小
- html - 如何修复 figcaptions 中的字符限制?网格画廊
- javascript - 从 JavaScript 函数获取返回 URL 并将其作为参数发送到操作
- javascript - 无效的挂钩调用。是否可以在函数组件的主体之外调用钩子或异步函数?
- python - Python Dataframe:一个str有数字和字母,我想删除字母并将剩余的数字乘以1,000,000
- python - 如何通过 python 将雪花与 Oauth 连接起来?
- ios - 如何使用 oauth_body_hash 属性在 Swift 中发送 OAuth 1.0 请求
- python-3.x - 如何使用 python-telegram-bot 广播自定义消息