Hadoop para os casos de Utilização do MySQL

Tenho uma base de dados com cerca de 4 milhões de registos de acções dos EUA, fundos de investimento e preços do ETFs durante 5 anos e todos os dias adiciono o preço diário por cada Segurança.

para uma característica em que estou a trabalhar, preciso de obter o último preço por cada Segurança (groupwise max) e fazer algum cálculo com outras métricas financeiras. A contagem de títulos é de ~40K.

mas o máximo groupwise com esta quantidade de dados é pesado e leva minutos a ser executado.

Claro, as minhas mesas. use índices, mas a tarefa envolve obter e processar em tempo real quase 7GB de dados.

Então estou interessado, esta tarefa é para grandes ferramentas de dados e algoritmos ou é uma pequena quantidade de dados? porque em exemplos eu notei que eles estão trabalhando em dados de milhares e milhões de GBs.

A minha base de dados é MySQL e quero usar o Hadoop para processar dados. É boa prática ou eu preciso usar apenas otimizações MySQL (meus dados são pequenos?) ou se é errado usar Hadoop nessa quantidade de dados, o que pode aconselhar para este caso?

nota que o meu aumento todos os dias e projeto envolve muitas análises, que precisam ser feitas em tempo real, com base no pedido do Usuário.

nota não sei se esta pergunta pode ser feita em stackoverflow, por isso, por favor, desculpe se a pergunta está fora do tópico.

Obrigado antecipadamente!

Author: Rick James, 2017-10-24

2 answers

Em termos Hadoop, os seus dados são muito pequenos. Os computadores mais recentes têm 16 + GB de RAM, portanto o seu conjunto de dados pode encaixar inteiramente na memória de uma única máquina.

No entanto, isso não significa que você pode pelo menos tentar carregar dados em HDFS e realizar alguma operação sobre ele. Sqoop & Hive seriam as ferramentas que você usaria para carregar e ter processamento SQL.

Uma vez que eu mencionei o ponto sobre a memória, no entanto, é inteiramente viável você não precisa Hadoop (HDFS & fio), e pode, em vez disso, usar Apache Spark w / SparkSQL para atingir o MySQL directamente a partir de uma ligação JDBC distribuída.

 1
Author: cricket_007, 2017-10-24 21:25:51

Para o MySQL, você pode tirar proveito dos índices, e alcançar o objetivo com ordem(M), Onde M é o número de títulos (40K) em vez de O(N), onde N é o número de linhas na tabela.

Aqui está um exemplo isso precisa de adaptação.
 0
Author: Rick James, 2017-10-27 13:56:34