she*_*ers 0 filesystems hadoop hive hdfs impala
尽管多年来一直使用传统数据库,但我相信我对 Hive 和 Impala 如何与 HDFS 交互(或者 HDFS 本身如何工作!)有一个根本的误解,并希望得到一些建议。
只是为了设定我的想法:在 Windows 上,当我创建一个文件(例如 bob.txt)时,该文件存储在“文件系统”(NTFS)上。现在,无论我使用 Windows 资源管理器、命令提示符还是其他软件,我都会看到 bob.txt,因为它存在于“文件系统”中,并且所有软件都可以访问文件系统。
在我使用 RedHat 上的 Cloudera 与 HDFS 的 noobie 交互中,我不相信它的工作方式与上一段所述完全相同。
例如,在使用 Hue 时,如果我在“Hive 查询编辑器”中创建一个表,则在“Impala 查询编辑器”中时,该表似乎没有显示在表列表下。当我从命令提示符使用“hive”和“impala-shell”时,也会发生类似的情况。但是,这对我来说没有意义,因为在这种情况下,表应该只是“在文件系统上”——HDFS。
使用 sqoop 从 Oracle 中提取时会发生类似的操作。当我从 Oracle 中提取的表应该放在“文件系统上”时,为什么我需要使用“--import-hive”选项。一旦在 HDFS 文件系统上,位于它之上的任何软件——例如 Hive、Impala 或其他任何东西——都应该能够访问它。
在任何情况下,其中一些可能是 noobie 用户错误/误解,所以预先道歉!
并提前感谢您的任何评论/建议!
您似乎缺少对Hive Metastore的理解。是的,表被放置在“文件系统上”。事实上,所有数据库都只是“磁盘上的文件”。其他数据库可能会另外维护索引文件或预写日志,但实际上定义了表的是什么?一个架构。在 Hive 和 Impala(以及几乎所有兼容的 SQL on Hadoop 工具)中,它们要求您将模式实际存储在称为元存储的关系数据库中。
如果我在“Hive 查询编辑器”中创建一个表,则在“Impala 查询编辑器”中时,该表似乎不会显示在表列表下。
这实际上是 Hue 中的一个错误,它不会立即刷新表格。我以为我在新的 Hue 版本中看到过,它是固定的,但无论如何,Impala 有一个特殊的INVALIDATE METADATA查询来重建其可用表的索引。
当我从 Oracle 中提取的表应该放在“文件系统上”时,为什么我需要使用“--import-hive”选项。一旦在 HDFS 文件系统上,位于它之上的任何软件——例如 Hive、Impala 或其他任何东西——都应该能够访问它。
没错,任何工具都可以访问它,但是,您仍然需要在CREATE TABLE某个地方运行一个来实际指定如何解析这些文件。Pig 和 Spark 可以在不访问 Hive Metastore 的情况下立即读取数据,但是您仍然需要自己解析列,并且根据文件的格式,每个字段都将是一个字符串
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |