我正在努力建立公司的新数据湖,并试图找到最好的和最近的选择在这里工作.因此,我找到了一个非常好的解决方案来使用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
输入格式 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
我正在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?
我正在尝试使用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中我发现它们已经实现了.
还有其他连接方式吗?
我有一个由 AWS Glue 管理的数据目录,我的开发人员在 S3 存储桶中使用新表或分区进行的任何更新,我们都会使用爬网程序每天进行更新,以保持新分区的正常运行。
但是,我们还需要自定义表属性。在我们的配置单元中,我们将每个表的数据源作为表属性,并用胶水将其添加到数据目录中的表中,但是每次运行爬虫时,它都会覆盖自定义表属性(例如描述)。
我做错了什么吗?或者这是 AWS Glue 的错误?
我正在尝试了解PrestoDB,我有一个MySql数据库.这个数据库只是一个相对较小的数据库,我用它来理解presto如何与JDBC连接一起工作.
我已经使用presto连接到Hive Metastore,我理解它如何与ORC文件一起工作,presto worker如何获取数据并运行我需要的查询.
这张图片对我来说非常清楚:
很明显,并行化将如何与此模型一起使用.
但是在MySql连接中,如何将数据与关系数据库并行化?perst是否将表加载到worker中然后运行查询?
或者只是在MySQL中运行查询并创建结果的接口?
aws-glue ×2
hive ×2
amazon-emr ×1
amazon-s3 ×1
apache-kafka ×1
apache-spark ×1
bigdata ×1
create-table ×1
hdfs ×1
mysql ×1
presto ×1
python ×1