Saturday 21 October 2017

Option Compare Text Vs Binary


Fluxo vs Kafka vs Kinesis Introdução A Internet das coisas vai colocar novas exigências sobre Hadoop ingerir métodos, especificamente na sua capacidade de capturar dados brutos do sensor de fluxos binários. Conforme discutido. Os dados grandes removerão as restrições de armazenamento de dados anteriores e permitirão o fluxo contínuo de dados de sensores não processados ​​em granularidades ditadas pelos próprios sensores. O foco deste post será sobre como três ferramentas de injeção de Hadoop, Flume, Kafka e Amazon s Kineses, comparam com respeito à captura inicial desses dados, particularmente na configuração, monitoramento e escala. Postagens futuras continuarão a examinar as técnicas de processamento como dados faz o seu caminho através do pipeline de dados Hadoop, incluindo um olhar para Spark Streaming. O que se entende por dados de fluxo binário A maioria dos dados, logs de uso, por exemplo, são fluxos de eventos de texto que são o resultado de alguma ação, como um clique do usuário. Os dados podem ser serializados em blocos discretos com base no evento. Obviamente, um fluxo binário também pode ser dividido em pontos de dados discretos, mas em vez de ser baseado em evento, os dados são um fluxo contínuo coletado em uma freqüência específica. Considere, por exemplo, um sensor de temperatura, com uma resolução de 1000 leituras por segundo. Pode não ser possível serializar os dados nessa freqüência e, em vez disso, o foco na ingestão será pura captura e, em seguida, empurrar o processamento de serialização para um sistema distribuído como Hadoop. Para este post, as ferramentas ingests foram colocadas através de seus ritmos usando ingest de áudio como um caso de uso exemplo. Streaming de áudio tem um bitrate suave de 128Kb / s, mas se alguém quisesse, por exemplo, gravar todas as estações de rádio dentro de uma zona de escuta, o agregado seria substancial. Todo o código para este post pode ser encontrado em Github Flume A primeira ferramenta avaliada é um popular log baseado em dados ingest plataforma, Flume. É personalizável o suficiente para permitir a inclusão nesta avaliação. A interface com os dados brutos é chamada de fonte. Há um monte de fontes pré-implementadas, mas nenhuma que poderia nativamente fluxo de dados binários produzidos em um ponto de extremidade URL, de modo que uma implementação de código personalizado foi necessária. Há dois padrões de implementação a seguir, Pollable ou EventDriven. O fluxo contínuo de dados alinhado melhor com a implementação EventDriven. Grande parte do código de exemplo foi modelado fora da implementação do Netcat. As configurações específicas de origem seguiram bem os padrões de configuração de fumos existentes. Por exemplo, incluir contadores MBean permite que as métricas de origem sejam exibidas em painéis existentes. Uma vez compilado, o jar fonte é adicionado ao diretório plugins. d. Uma forma conveniente de organizar o código personalizado. Para obter escala e resiliência, a fonte Flume transmite mensagens para um canal. Para escalonar alto débito, o canal tem a noção de seletores de canais com a opção de multiplexar em vários canais que permite a escalabilidade horizontal. O throughput de um único canal é determinado pelo seu apoio. Flume alta disponibilidade pode ser configurado por ter múltiplos hosts coletor em que os clientes são configurados para failover quando um coletor falha. Os eventos do coletor com falha serão reproduzidos quando o nó estiver novamente online. O RAID pode ser usado para aliviar as preocupações com a perda de dados em uma falha de único nó. Pros: Boa documentação com muitos padrões de implementação existentes a seguir Integração fácil com a estrutura de monitoramento existente que examina os contadores do MBeans Integração com o Cloudera Manager para monitorar os processos do Flume Contras: Evento em vez desse fluxo cêntrico A capacidade de cálculo não é uma ciência exata Dependente da loja de apoio do canal. Kafka Kafka é um log de commit distribuído ganhando popularidade como um serviço de ingestão de dados. A interface de Kafka com o fluxo é chamada de produtor. Kafka está começando a obter mais implementações produtoras, mas, novamente, não havia implementações existentes que poderiam transmitir os dados de áudio de interesse. Ao implementar a interface do produtor, o programa resultante era um processo autônomo que foi construído para produzir mensagens para Kafka. O monitoramento do processo deveria ser considerado e integrado no sistema. Atualmente, as distribuições Hadoop ainda não têm integração Kafka para ajudar na monitoração. Mesmo quando o fizerem, concentrar-se-ão nos próprios processos de Kafka e não nos processos de produção. Kafka atinge escala adicional através de partições que são configuradas no produtor e distribui os dados entre os nós do cluster. Quanto mais partições, maior a taxa de transferência. É de responsabilidade do usuário determinar o esquema de particionamento apropriado. Isso pode ser particularmente complicado sem examinar o conteúdo dos fluxos, mas muitas vezes há outros metadados que podem ser usados. Por exemplo, em nosso exemplo de ingestão de áudio, podemos particionar os fluxos de áudio com base na fonte de URL do fluxo de áudio, uma vez que não excede o limite de throughput de uma partição. Kafka tem resiliência como uma característica de primeira classe através de réplicas definidas do tópico. As réplicas adicionais têm impacto negligenciável na taxa de transferência. Prós: Taxas de ingestão altamente atingíveis com padrão de escala claro Alta resiliência por meio de réplicas distribuídas com pouco impacto no throughput Contras: Nenhuma estrutura atual para monitoramento e configuração de produtores AWS Kinesis Kinesis é muito semelhante ao Kafka, como o autor original de Kafka aponta. O AWS Kinesis SDK não fornece nenhum produtor padrão apenas um exemplo de aplicativo. Usando esse exemplo como base, a implementação de Kinesis do nosso exemplo de exemplo de áudio seguiu bem. O serviço Kinesis se integra muito bem com outros serviços AWS, facilitando a escalabilidade e o processamento de dados (mais sobre isso em outro post). Dado que o Kinesis é um serviço em nuvem, a comunicação da fonte local irá incorrer em maior latência em comparação com a de uma instalação de cluster Kafka no local. A implementação do produtor Kinesis seguiu o exemplo de Kafka muito de perto e sofre da mesma confusão de monitorar outro processo produtor. Prós: Taxas de ingestão altamente viáveis ​​com padrão de escala claro Características similares de rendimento e resiliência para a Kafka Integra-se com outros serviços da AWS como EMR e Data Pipeline. Contras: Nenhum quadro atual para monitoramento e configuração de produtores Serviço de nuvem. Possível aumento na latência da fonte para Kinesis. Conclusão Para o exemplo básico de streaming de áudio, cada ferramenta de ingestão foi capaz de capturar o fluxo com um pouco de código de ingerência personalizado. Cada solução requer a compreensão das configurações de escalabilidade e resiliência necessárias para acomodar as taxas de dados de seus sensores para garantir que os dados não sejam perdidos. Kafka e Kinesis têm escalas muito semelhantes e padrões de resiliência. O Kinesis é um serviço totalmente gerenciado da AWS com integração a outros serviços. Kafka vem ganhando popularidade e possíveis integrações futuras com fornecedores de distribuição Hadoop. Ambos Kafka e Kinesis exigem monitoramento personalizado e gestão dos processos de produção reais. Considerando que os processos Flume e as métricas subsequentes podem ser reunidos automaticamente com ferramentas como Cloudera Manager. Flume não tem as configurações claras de escalabilidade e resiliência que são fundamentais com Kafka e Kinesis A Internet das coisas vai empurrar ferramentas de injeção Hadoop para nova escala. Dê uma olhada no exemplo de fluxo de áudio código para obter sentido de como implementar ingerir dados de fluxo binário em Hadoop. Deixe uma resposta Cancelar resposta Eu estava intrigado por um post recente apontando que usando. Text para recuperar dados de intervalos Excel ficou mais lento e mais lento como você iterou através das linhas. Então eu levei algum tempo para explorar e comparar as três propriedades principais (Range. Value, Range. Value2 e Range. Text) para obter valores de resultado de um Excel Range em VBA. Naturalmente, como você verá, cada um deles tem suas próprias peculiaridades e vantagens. Range. Text Isso obtém o valor formatado de uma célula. Na verdade, parece que. Text obtém o valor da célula e, em seguida, formata-lo, porque quanto mais complexa a formatação mais lenta é..Text é uma propriedade somente leitura, portanto, você não pode defini-la diretamente. Se você tentar obter. Texto de várias células em uma variante (varr Range ().Text) você não obter uma matriz de resultados. Em vez disso, se todas as células do intervalo contiverem o mesmo valor formatado da mesma forma que você obtém um único valor formatado, mas se qualquer uma das células tiver valores ou formatos diferentes, obterá Nulo (isso pode ser um truque útil). Quando usado dentro de um UDF você pode usar. Text para obter o valor formatado da célula chamadora como era antes que o UDF foi chamado (você não pode fazer isso com. Value ou. Value 2 sem causar uma referência circular). Aqui está um exemplo que adiciona um extra. Em cada cálculo. O principal inconveniente de. Text quando usado dessa forma é que ele dá o valor formatado, então o valor que você pode obter se o usuário tiver definido um zoom inadequado ou largura de coluna, ou números poderiam ser recuperados como 1E 18 ou Range. Value Isso principalmente obtém o valor subjacente da célula. Porém, se a célula for formatada como uma data ou uma moeda, Range. Value converte o valor subjacente em uma variável de data ou moeda do VBA antes de passá-la para a variável VBA usada na instrução de atribuição. Uma vez que a moeda VBA tem apenas 4 casas decimais isso pode causar uma perda de precisão. Suponha que a célula G4 tem um valor de 123.456789 formatado como moeda. Então Range ().Value irá recuperar um valor de 123.4568 em vez do valor real Se você atribuir isso a uma variante você recebe uma variante com um subtipo de moeda, mas se você atribuir a um duplo, em seguida, o valor primeiro é convertido em moeda Tipo de dados e truncado e, em seguida, o tipo de dados de moeda é convertido em um duplo. Talvez usando. Value para recuperar células formatadas como datas em uma variante é útil porque, em seguida, você pode usar IsDate () para detectar que a célula foi uma data. Range. Value é uma maneira eficiente de transferir um intervalo de valores de célula para VBA porque você pode atribuir o intervalo a uma variável variável e você obtém uma variante que contém uma matriz bidimensional de variantes. Isso é muito mais eficiente que looping nas células um por um. O valor é (infelizmente) a propriedade padrão do objeto Range. Range. Value2 Isso funciona da mesma maneira que Range. Value, exceto que ele não verifica o formato de célula e converte para Data ou Moeda. E thats provavelmente porque seu mais rápido do que. Value ao recuperar números. Então. Value2 realmente deve ser o padrão, e é definitivamente o único a usar 99 do tempo. Comparação de desempenho Então, como essas propriedades comparar para a velocidade Aqui está o meu código de teste: Eu corri este usando uma nova planilha com dados de teste de números nas primeiras 40000 linhas. A primeira execução mostrou tempo mais ou menos constante para cada bloco. Então eu mudei a linha de altura de 10 linhas em intervalos aleatórios. A próxima execução (.Text (2) é muito mais lenta, e os tempos aumentam de bloco para bloco. Então o que está acontecendo: por que tanto mais lento com o aumento de vezes Bem, verifica-se que uma vez que bastante linha-alturas foram alteradas o tempo. Text é uma função do número de linhas entre as linhas visíveis selecionadas na tela e a linha que está sendo processada (E não, não sei por que. O texto deve estar fazendo algum tipo de cálculo de altura de linha cumulativa). Adicione Range (t trabalho) Finalmente eu substitui. Text com. Value e, em seguida, com. Value2 e, em seguida, usei uma matriz variante em vez do loop interno para obter o conjunto completo de timings: Conclusões. Text é muito lento mesmo se você ignorar o. Value2 é mais rápido do que. value com números (nenhuma diferença significativa com o texto).Value2 usando uma matriz variante é muito o caminho mais rápido para ir Então, você nunca usar. Text E se Então por que Nice trabalho Charles, acho que uso. Text na maioria das vezes, ou eu acho. Valor, como que s o padrão, quando empurrando o intervalo wks para um Array. Eu sempre tinha pensado que. text iria apenas pegar o texto, um pouco como colar especial, então se algum do texto foi escondido / não exibido na célula você não iria obter esse texto com. Texto, mas você faria com. valor. Então. value2 é, então, ta muito Muito dito que eu posso dizer que eu já tive um problema com a velocidade desta forma. Charles, Você já fez testes comparando o uso de. Formula vs. Value /.Value2 Um uso para. Text seria verificar entradas duplicadas em uma lista formatada de Strings. (Dependendo de como Jim Cone Formula e. FormulaR1C1 são mais lentos do que. Value (fator de 10 usando uma matriz variante e, claro, produzir resultados diferentes se você realmente tem uma fórmula) Devo admitir que acho difícil de prever um cenário onde eu Gostaria de comparar os valores formatados para duplicatas, em vez de os valores reais. Eu postei macros mais em DDoE que transformar tabelas do Excel em tabelas HTML. Eu uso. Text para garantir wysiwyg. Mrt (Michael Michael) Michael, finalmente um uso sensato De. Text (além do truque UDF bastante duvidoso) encontrei outro uso para. Value com datas / moeda: Se você usar. Value para gravar uma VBA Data / Hora ou variável de moeda em uma célula que irá formatar a célula como data ou Tempo ou moeda (mas apenas se você fizer isso a partir de um Sub em vez de um UDF).Grande artigo. Eu recentemente me liguei para usar. Text quando eu tinha a necessidade explícita de percorrer um intervalo à procura de NAME ou DIV / 0 para destacar Eles em uma planilha como parte de um processo de auditoria. Eu tinha pensado para usá-lo ainda mais para aplicações não numéricas, evitando facilmente quaisquer erros de avaliação que eu teria, de outra forma, teria que armadilha. Tendo ouvido o argumento sobre a velocidade, etc Eu acho que vou voltar para. Value (ou. Value2), mas manter o texto em mente para estas aplicações especiais, como o que eu mencionei. Ao procurar NAME ou DIV / 0, você pode usar. Value2 para obter o valor da célula em uma variante, então use If IsError (var) para detectar um erro e se var CVErr (xlErrName) etc para distinguir entre diferentes tipos de erro. Isso será mais robusto (e provavelmente mais rápido) do que usar. TEXT. Eu usei IsError apenas naquela ocasião, hoje e relembrei que aprendi com você. Esse cenário, no entanto, me levou para o caminho de usar. Text. Você vê, eu estava escrevendo um texto de exportação, tab delimitado por abas para evitar ter citações duplas, e considerou a ocasião em que a planilha pode ter erros nele. Como resultado, como eu processado cada célula, eu testei para IsError (rng) e se fosse, eu usei o valor rng. Text para a saída. Uma razão, talvez, para usar a propriedade. Text Hi Fastexcel para que ele não flag como um erro Oi Dan, ele funciona Ok para mim: colocar 1/0 na célula A1 e, em seguida, executar este. Sub Var (var) Vari (var) Vari Vari (var) var Variant Var (A1).Value var2 Range (A1).Value2 MsgBox IsError (var2) MsgBox IsError (var) End Sub Recentemente me deparei com. Text enquanto modificava um conjunto de subs Feita por uma empresa externa. Eu didn Agora que eu entendo que você iria transferir para fora erros de formatação, etc como que eu realmente me pergunto por que eles escolheram. Text Muito obrigado por explicar as vantagens e desvantagens de cada propriedade. Eu acho que para a maioria de minha programação agora posso mudar para usar. Value2: o) Eu tentei a propriedade. Text para mover códigos zip (especialmente aqueles com um zero à esquerda), sabendo que o código seria validado como texto no receptor Pasta de trabalho. Foi mal-concebido embora porque, na entrada, a propriedade. Value2 reconheceu o formato de texto corretamente e eu ainda couldn. Qualquer idéias melhores que eu acho que eu uso. Text na maioria das vezes, ou eu acho. Valor, como que s o padrão, quando empurrando o intervalo wks para um Array. Valor converte o valor subjacente em uma variável de data ou moeda VBA antes de passá-lo para a variável VBA usada na declaração de atribuição. Muito interessante e útil como eu estou trabalhando recentemente com quantidades muito grandes de dados. Por que não estou surpreso esta informação está no seu site, eu acho que se pode usar. text para verificar se ele tem em uma célula em vez de um número por causa de uma largura de coluna errada. Won A vantagem de. Text para. Value ou Value2: Eu não sou a forma como a matriz é criada / preenchida que importa. Sub M snb () Células (1).Resize (40000).Copy Com GetObject (Novo:).GetFromClipboard sn Split (.gettext, vbCrLf) Fim Com Para j 1 Para 40000 Etapa 5000 t1 MicroTimer () Para jj 1 Para 5000 Se você quiser preencher comboboxex / listboxes de acordo com as configurações internacionais você precisa a propriedade. Text caso contrário suas datas serão mm / dd / aaaa em vez de, por exemplo, Dd-mm-aaaa ou dd. mm. aaaa. A menos que você use. Text. Moeda será escrito como 12,35 em vez de, por exemplo, 12,35 Geralmente: se você quiser que o conteúdo das caixas de listagem, caixas de combinação, caixas de texto correspondam à formatação em células, você terá que usar. Text (ou reformatar valores no VBA antes de preencher o controle). Obrigado: outra ocasião ao usar. Text pode fazer sentido UltraCompare Lite vs UltraCompare Pro A chave para encontrar o que você está procurando, é saber olhar. Veja o que o UltraCompare Pro pode fazer por você O UltraCompare Lite fornece funcionalidade básica de comparação de texto e complementa o conjunto de recursos do UltraEdit / UEStudio, no entanto, o UltraCompare Pro oferece um conjunto de recursos bastante expandido (veja abaixo). Juntos, UltraEdit e UltraCompare Pro formam a solução de edição de texto total preferida por milhões. Comparação de texto / arquivo e sincronização Mesclar alterações em uma revisão atualizada de um arquivo com seu antepassado (ou qualquer outro arquivo). Use para reconciliar as alterações conflitantes feitas a um conjunto de arquivos por vários desenvolvedores ou para mesclar ramos em um controle de código-fonte ou sistema de gerenciamento de configuração de software. Compare as alterações em duas revisões atualizadas de um arquivo com seu antepassado comum (ou qualquer outro arquivo). Use para reconciliar as alterações conflitantes feitas a um conjunto de arquivos por vários desenvolvedores ou para mesclar ramos em um controle de código-fonte ou sistema de gerenciamento de configuração de software. Mesclar alterações em duas revisões atualizadas de um arquivo com seu ancestral comum (ou qualquer outro arquivo). Use para reconciliar as alterações conflitantes feitas a um conjunto de arquivos por vários desenvolvedores ou para mesclar ramos em um controle de código-fonte ou sistema de gerenciamento de configuração de software. Suporte de arquivos grandes Compare arquivos de vários gigabytes no UC Pro. O UC Lite não tem um limite rígido no tamanho do arquivo, mas vários fatores determinam se a comparação pode ser executada no UC Lite, incluindo o tamanho do arquivo, a quantidade de blocos de diferença, a memória necessária para mapeá-los, etc. - sync Linhas para comparar Às vezes, seus arquivos são estruturados de tal forma que você precisa para corresponder manualmente linhas semelhantes. O UltraCompare Pro permite sincronizar manualmente duas linhas e continuar a comparação a partir deste local. Intervalo de Colunas Ignorar / Comparar Especifique até quatro intervalos de colunas únicos para UltraCompare para comparar ou ignorar.

No comments:

Post a Comment