标签: hive

AWS EMR 自动缩放

我正在研究 AWS 上的 Hive(特别是 EMR)。他们提供了两种选择

  1. 生成 Ad-hoc 集群,其中在评估执行预先指定的 Hive 查询(在引导程序中)后,将拆除 EMR 集群。
  2. 以交互模式生成 Hive 集群,可以通过 SSH 连接到主服务器并使用hive命令行客户端提供 Hive 查询。

显然,在第二个选项中,集群将保持活动状态,直到明确要求终止为止。

我想修改保持活动配置单元集群中从属节点的数量。我在emr faq中读到它只支持添加和删除,task-nodes但仅支持添加(但不删除)core-nodes。核心节点有助于 HDFS 存储,但任务节点则不然。

我想向正在运行的集群添加更多核心节点,并在运行的查询数量较少时缩小它们的规模。有没有办法实现这一点(可能使用cloudwatch)?

hive amazon-web-services amazon-emr autoscaling

0
推荐指数
1
解决办法
4316
查看次数

Spark SQL中如何获取列的数据类型?

我想找出表中每一列的数据类型?

例如,假设我的表是使用以下命令创建的:

create table X
(
col1 string,
col2 int,
col3 int
)
Run Code Online (Sandbox Code Playgroud)

我想做一个会输出如下内容的命令:

column datatype
col1  string
col2  int
Run Code Online (Sandbox Code Playgroud)

有这个命令吗?最好是在 SparkSQL 中。但是,如果没有,那么如何使用其他方式获取这些数据呢?我正在使用 Spark sql 查询 Hive 表。也许通过 HIVE 中的元数据?谢谢。

hive apache-spark apache-spark-sql

0
推荐指数
1
解决办法
2万
查看次数

Hive 和 Impala 及其与 HDFS 的交互

尽管多年来一直使用传统数据库,但我相信我对 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 用户错误/误解,所以预先道歉!

并提前感谢您的任何评论/建议!

filesystems hadoop hive hdfs impala

0
推荐指数
1
解决办法
615
查看次数

如何在配置单元的分区数据中创建表?

drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/_impala_insert_staging
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:18 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI
[mgupta@sjc-dev-binn01 ~]$ hadoop fs -ls /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI
Found 27 items
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201602
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201603
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201604
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201605
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201606
drwxr-xr-x   - mgupta supergroup          0 2018-03-26 22:16 …
Run Code Online (Sandbox Code Playgroud)

hive create-table hive-partitions

0
推荐指数
1
解决办法
3万
查看次数

遍历 Spark 数据帧的列并更新指定的值

为了遍历从 Hive 表创建的 Spark Dataframe 的列并更新所有出现的所需列值,我尝试了以下代码。

import org.apache.spark.sql.{DataFrame}
import org.apache.spark.sql.functions._
import org.apache.spark.sql.functions.udf

val a: DataFrame = spark.sql(s"select * from default.table_a")

    val column_names: Array[String] = a.columns

    val required_columns: Array[String] = column_names.filter(name => name.endsWith("_date")) 

    val func = udf((value: String) => { if if (value == "XXXX" || value == "WWWW" || value == "TTTT") "NULL" else value } )

    val b = {for (column: String <- required_columns) { a.withColumn(column , func(a(column))) } a}
Run Code Online (Sandbox Code Playgroud)

在 spark shell 中执行代码时,出现以下错误。

scala> val b = {for …
Run Code Online (Sandbox Code Playgroud)

hive scala apache-spark apache-spark-sql

0
推荐指数
1
解决办法
4090
查看次数

如何将小的镶木地板文件合并为一个大的镶木地板文件?

我有一些分区的配置单元表,它们指向镶木地板文件。现在每个分区都有很多小的镶木地板文件,每个大小约为 5kb,我想将这些小文件合并为每个分区的一个大文件。我怎样才能做到这一点来提高我的蜂巢性能?我尝试将分区中的所有镶木地板文件读取到 pyspark 数据帧,并将组合数据帧重写到同一分区并删除旧的。但出于某种原因,这对我来说似乎效率低下或初学者级别的类型。这样做的利弊是什么?而且,如果有任何其他方法,请指导我在 spark 或 pyspark 中实现它。

hive apache-spark parquet pyspark

0
推荐指数
1
解决办法
9818
查看次数

从 Spark Sql 写入 Hive 表时出错

我正在尝试从 Spark Sql 将数据插入到 Hive 外部表中。我通过以下命令创建了 hive 外部表

CREATE EXTERNAL TABLE  tab1 ( col1 type,col2 type ,col3 type) CLUSTERED BY (col1,col2) SORTED BY (col1) INTO 8 BUCKETS STORED AS PARQUET
Run Code Online (Sandbox Code Playgroud)

在我的 spark job 中,我编写了以下代码 Dataset df = session.read().option("header","true").csv(csvInput);

df.repartition(numBuckets, somecol)
                  .write()
                  .format("parquet")
                  .bucketBy(numBuckets,col1,col2)
                  .sortBy(col1)
                  .saveAsTable(hiveTableName);
Run Code Online (Sandbox Code Playgroud)

每次运行此代码时,都会出现以下异常

org.apache.spark.sql.AnalysisException: Table `tab1` already exists.;
    at org.apache.spark.sql.DataFrameWriter.saveAsTable(DataFrameWriter.scala:408)
    at org.apache.spark.sql.DataFrameWriter.saveAsTable(DataFrameWriter.scala:393)
    at somepackage.Parquet_Read_WriteNew.writeToParquetHiveMetastore(Parquet_Read_WriteNew.java:100)
Run Code Online (Sandbox Code Playgroud)

hive apache-spark

0
推荐指数
2
解决办法
4465
查看次数

如何在presto中添加分区?

在蜂巢中,我可以通过以下方式做到:

ALTER TABLE xxx ADD PARTITION (datehour='yy') LOCATION 'zz';

我怎样才能在 presto 中做到这一点?

hive presto

0
推荐指数
1
解决办法
3929
查看次数

Spark Dataframe 在覆盖 Hive 表的分区数据时出现问题

下面是我的 Hive 表定义:

CREATE EXTERNAL TABLE IF NOT EXISTS default.test2(
id integer,
count integer
)
PARTITIONED BY (
fac STRING,
fiscaldate_str DATE )
STORED AS PARQUET
LOCATION 's3://<bucket name>/backup/test2';
Run Code Online (Sandbox Code Playgroud)

我有如下配置单元表中的数据,(我刚刚插入了示例数据)

select * from default.test2

+---+-----+----+--------------+
| id|count| fac|fiscaldate_str|
+---+-----+----+--------------+
|  2|    3| NRM|    2019-01-01|
|  1|    2| NRM|    2019-01-01|
|  2|    3| NRM|    2019-01-02|
|  1|    2| NRM|    2019-01-02|
|  2|    3| NRM|    2019-01-03|
|  1|    2| NRM|    2019-01-03|
|  2|    3|STST|    2019-01-01|
|  1|    2|STST|    2019-01-01|
|  2|    3|STST| …
Run Code Online (Sandbox Code Playgroud)

hive partition apache-spark apache-spark-sql pyspark

0
推荐指数
1
解决办法
3348
查看次数

Trino 和 Presto 的区别

我知道 Presto 以前是 PrestoDB,而 Trino 以前是 PrestoSQL。我知道 PrestoDB 于 2012 年在 Facebook 创建,直到 2019 年 1 月它们都是同一个项目。据我所知,该项目最初是为了解决 300 PB Hive 数据仓库上的缓慢查询而创建的。我知道还有来自 Teradata 的 Presto 发行版等等。

我从互联网上收集了一些信息,当我在寻找基于事实的差异时,这些信息非常有见地

在比较两者并更喜欢 Trino博客中,我看到他们说:

  • 虽然 Trino 是针对多个数据源运行 ETL 查询的公司的出色解决方案,但它还提供了节省资源和收集更多输出的选项。
  • Trino 还擅长允许用户使用 SQL 运行即席查询,而不管数据位于何处。它消除了将数据 ETL 到另一个系统的需要。
  • Trino 允许用户创建个性化的报告和统一的仪表板,以更好地查询多个数据源。

以及 Trino 中不存在的 Presto 功能,例如 Presto-on-Spark 看起来一直是开发重点:

这些功能包括:

  • Project Aria – 非常适合处理 ORC 等文件格式。
  • Project Presto Unlimited – 一种用于创建临时内存存储桶的内存节省功能。
  • 其他用户定义的函数,例如动态 SQL 函数支持。
  • Presto-on-Spark – Spark 执行器中的库。

在Trino的公告中,他们展示了两个项目之间提交数量的差异。

另一个帖子,是喜欢普雷斯托 …

hive presto trino

0
推荐指数
1
解决办法
228
查看次数