【问题标题】:Import to HDFS or Hive(directly)导入到 HDFS 或 Hive(直接)
【发布时间】:2016-05-06 07:22:39
【问题描述】:
  1. 堆栈:使用 Ambari 2.1 安装了 HDP-2.3.2.0-2950
  2. 来源是一个大约 1.6TB 和大约 25 个表的 MS SQL 数据库 最终目标是检查现有查询是否可以在 HDP 上运行得更快
  3. 没有太多时间和可用性来多次导入数据,因此必须导入一次,并且需要对 Hive 表、查询等进行试验,例如,首先创建一个普通的, ORC 中的分区表。如果还不够,请尝试索引等。可能我们还会评估 Parquet 格式等

4.作为 4. 的解决方案,我决定首先以 Avro 格式将表导入 HDFS:

sqoop import --connect 'jdbc:sqlserver://server;database=dbname' --username someuser --password somepassword --as-avrodatafile --num-mappers 8 --table tablename --warehouse-dir /dataload/tohdfs/ --verbose

现在我计划创建一个 Hive 表,但我有一些问题提到了here

我的问题是,鉴于上述所有要点,最安全的方法是什么(就时间而言,而不是弄乱 HDFS 等) - 首先进入 HDFS,创建 Hive 表并进行实验或直接导入 Hive(I不知道如果我现在删除这些表并希望重新开始,我是否必须重新导入数据)

【问题讨论】:

  • 我发现这 2 个断言之间存在矛盾:“没有时间多次导入数据” vs “必须对目标表进行试验...重新创建表 w/不同的选项”。如果您想尝试使用不同分区方案的不同 SerDe(ORC、Parquet),那么您必须重新创建 Hive 表并重新加载它们几次。
  • 那么你是什么意思“导入数据”——你想在 HDFS 中创建一个可移植格式(例如 CSV)的转储,用作许多来源次?使用Sqoop。或者您想要一个端到端的解决方案来从 SQL Server 读取数据并将数据直接加载到您的分区 ORC/Parquet 格式?使用Spark,最新版本可以像 Sqoop 一样进行并行加载(但要注意一些不是从 Metastore 自动获取的选项,例如 Parquet 压缩——并且分区管理并不简单)
  • 通过“导入数据”,我的意思是“访问 sql 服务器并将数据加载到 hdfs”,即我可以在 Hive 中做任何我想做的事情。次,但我不能多次访问 sql 服务器来获取数据。我已经以 Avro 格式导入了 sql server 表,现在我正在构建 Hive ORC 和 Hive Avro 表,唯一的困惑是导入期间的 Avro 文件格式是否会造成性能下降。稍后执行 Hive 查询时会出现问题
  • 使用 ORC 不要忘记您可以调整一些属性,具体取决于数据配置文件和查询模式——参见。 fr.slideshare.net/Hadoop_Summit/…

标签: hadoop hive hdfs sqoop


【解决方案1】:

对于加载,您可以尝试这些选项

1) 您可以将 mysql 导入到 csv 文件中,该文件将作为备份存储在您的 Linux 文件系统中,然后对 HDFS 进行 distcp。

2) 如前所述,您可以执行 Sqoop 导入并将数据加载到 Hive 表 (parent_table)。

为了检查使用不同格式和分区表的性能,您可以使用 CTAS (Create Table As Select) 查询,您可以在其中从基表 (parent_table) 创建新表。在 CTAS 中,您可以提及 parque 或 avro 等格式,分区选项也在那里。

即使您删除了 CTAS 创建的新表,基表也会在那里。

根据我的经验,Parque + partition 将提供最佳性能,但也取决于您的数据。

【讨论】:

    【解决方案2】:

    我看到连接和设置都正确。但我在查询中看不到--fetch-size。默认情况下,--fetch-size 是 1000,在您的情况下这将永远存在。如果列数较少。我建议增加--fetch-size 10000。当列数少于 50 时,我已经上升到 50000。如果您有 100 列,可能会达到 20000。我建议检查每行数据的大小,然后再决定。如果其中有一列的数据大小大于 1MB。那么我不会推荐任何超过 1000 的东西。

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 2019-07-12
      • 2011-08-11
      • 2017-12-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多