小编Thi*_*dim的帖子

表格的异常通过AWS Glue Crawler识别并存储在数据目录中

我正在努力建立公司的新数据湖,并试图找到最好的和最近的选择在这里工作.因此,我找到了一个非常好的解决方案来使用EMR + S3 + Athena + Glue.

我做的过程是:

1 - 运行Apache Spark脚本,在Orc存储的S3中按日期分区生成3000万行.

2 - 运行Athena查询以创建外部表.

3 - 检查与胶水数据目录相关的EMR表,它运行良好.Spark和Hive都可以​​访问.

4 - 在按日期分区的其他文件夹中生成另外3000万行.在Orc格式

5 - 运行识别新表的Glue Crawler.添加到数据目录,Athena能够进行查询.但Spark和Hive无法做到这一点.请参阅以下例外:

火花 Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcStruct

蜂巢 Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating audit_id (state=,code=0)

我正在检查是否有任何序列化问题,我发现了这个:

手动创建的表(配置):

输入格式 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat

输出格式为 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat

Serde序列化lib org.apache.hadoop.hive.ql.io.orc.OrcSerde

orc.compress SNAPPY

使用Glue Crawler创建的表:

输入格式 org.apache.hadoop.mapred.TextInputFormat

输出格式 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

Serde序列化lib org.apache.hadoop.hive.ql.io.orc.OrcSerde

因此,这不适用于从Hive或Spark读取.它适用于雅典娜.我已经更改了配置,但对Hive或Spark没有任何影响.

有人遇到过这个问题?

amazon-s3 amazon-web-services amazon-emr apache-spark aws-glue

15
推荐指数
1
解决办法
1319
查看次数

HIVE - INSERT OVERWRITE vs DROP TABLE + CREATE TABLE + INSERT INTO

我正在hive中做一些自动脚本的几个查询,我们发现我们需要时间清理表中的数据并插入新的数据.我们在想什么可能更快?

INSERT OVERWRITE TABLE SOME_TABLE
    SELECT * FROM OTHER_TABLE;
Run Code Online (Sandbox Code Playgroud)

或者更快这样做:

DROP TABLE SOME_TABLE;
CREATE TABLE SOME_TABLE (STUFFS);
INSERT INTO TABLE
    SELECT * FROM OTHER_TABLE;
Run Code Online (Sandbox Code Playgroud)

运行查询的开销不是问题.由于我们也有创建脚本o.问题是,INSERT OVERWRITE十亿行的速度比DROP + CREATE + INSERT INTO

hive create-table

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

将Kafka-Python与具有Kerberos的集群连接

我正在尝试使用Kafka-Python连接到Kafka,Kafka集群具有Kerberos,我们需要构建一些命令来执行几个步骤.

我已创建了一个主题在集群和我做了测试与./kafka-console-producer.sh./kafka-console-consumer.sh和的作品真的很好.

但是当我尝试连接Kafka-Python时,我遇到了问题.请参阅下面的代码:

def produce():
    print ('Producer')
    k_producer = KafkaProducer(bootstrap_servers='hostname:6667', 
                               security_protocol='SASL_PLAINTEXT',
                               sasl_plain_username='machine_usr',
                               sasl_plain_password='machine_pwd',
                               sasl_mechanism='PLAIN')
    for i in range(10):
        print ('Before send')
        k_producer.send('myTopic', 'Testing My Topic  ' + str(i))
        print ('After send')
Run Code Online (Sandbox Code Playgroud)

好吧,运行这些东西我在30秒后得到了这个错误消息:

File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\producer\kafka.py", line 328, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 202, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 791, in check_version
kafka.errors.NoBrokersAvailable: NoBrokersAvailable
Run Code Online (Sandbox Code Playgroud)

我在远程机器上运行它.而bootstrap_server我使用了Zookeeper主机名和端口但是也没有用.

我发现了一些关于它的东西,并且在Kafka-Python的git中我发现它们已经实现了.

还有其他连接方式吗?

python apache-kafka

7
推荐指数
2
解决办法
4610
查看次数

AWS Glue Crawler 覆盖自定义表属性

我有一个由 AWS Glue 管理的数据目录,我的开发人员在 S3 存储桶中使用新表或分区进行的任何更新,我们都会使用爬网程序每天进行更新,以保持新分区的正常运行。

但是,我们还需要自定义表属性。在我们的配置单元中,我们将每个表的数据源作为表属性,并用胶水将其添加到数据目录中的表中,但是每次运行爬虫时,它都会覆盖自定义表属性(例如描述)。

我做错了什么吗?或者这是 AWS Glue 的错误?

amazon-web-services aws-glue

5
推荐指数
1
解决办法
1768
查看次数

Presto如何与Relational Database一起使用

我正在尝试了解PrestoDB,我有一个MySql数据库.这个数据库只是一个相对较小的数据库,我用它来理解presto如何与JDBC连接一起工作.

我已经使用presto连接到Hive Metastore,我理解它如何与ORC文件一起工作,presto worker如何获取数据并运行我需要的查询.

这张图片对我来说非常清楚:

Presto + Hive

很明显,并行化将如何与此模型一起使用.

但是在MySql连接中,如何将数据与关系数据库并行化?perst是否将表加载到worker中然后运行查询?

或者只是在MySQL中运行查询并创建结果的接口?

mysql hive bigdata hdfs presto

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