FB_init

Saturday, December 10, 2016

Dados abertos - Câmara Legislativa - Proposições

Como fazer uma Planilha do Google com dados abertos da Câmara Legislativa. Nesse exemplo uso uma fórmula customizada. Esse é o resultado final:

Note o uso de uma fórmula customizada:



Para criar uma fórmula customizada, vá no menu "Ferramentas" -> Editor de scripts...


Crie uma função chamada obterProposicao, como na imagem abaixo. A função chama um webservice da Câmara usando a classe UrlFetchApp ( ver https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app ). O webservice retorna XML que pode ser interpretado.


Porque o XML nesse caso tem uma estrutura simples só de um nível, um argumento chamado "elemento" declara "o que pegar do XML". Para ver os detalhes dos webservices da Câmara Legislativa, veja

http://www2.camara.leg.br/transparencia/dados-abertos/dados-abertos-legislativo

e

http://www2.camara.leg.br/transparencia/dados-abertos/dados-abertos-legislativo/webservices/proposicoes-1/obterproposicao

Enquanto o exemplo acima funcione, há uma melhoria e uma pergunta. Um problema é que cada referência à fórmula customizada na planilha chama o webservice uma vez. O ideal seria reduzir o número de chamadas ao webservice - se possível uma vez só pra planilha inteira - usando intervalos ( "ranges" ) de células. A pergunta é: quando é que as fórmulas são interpretadas e os dados são atualizados? Não achei a resposta muito facilmente. Em um post futuro mostrarei melhorias à solução resolvendo essas duas questões.


Dados abertos - webservices da Câmara Legislativa

  Estou olhando os webservices da Câmara Legislativa. A Câmara tem uma iniciativa de dados abertos. O requisito é ajudar algumas instituições da sociedade civil e indivíduos interessados a seguir mais detalhadamente o processo e tramitação de proposições da Câmara. Imagine que uma pessoa pode abrir uma planilha, entrar dados básicos de um Projeto de Emenda Constitucional (PEC) ou projeto de lei, clicar num menu ou entrar uma fórmula e os detalhes mais recentes do projeto de lei ou PEC aparecem dentro da planilha.

   Começo listando alguns links essenciais:

Dados abertos do Legislativo:

http://www2.camara.leg.br/transparencia/dados-abertos/dados-abertos-legislativo

Pesquisa simplificada:

http://www.camara.leg.br/buscaProposicoesWeb/pesquisaSimplificada

Debate:

 - O "pedido" foi de usar Excel. Mas como eu não tenho licença, olhei um pouco OpenOffice. Link principal: http://www.openoffice.org/development/ . Achei que eu ia demorar um pouco pra ver como usar a API. E também provavelmente ficasse complicado de usar o OpenOffice em Inglês ou de referir-se à documentação em Inglês para outras pessoas.

- Preferi usar o Google Sheets com Google Apps Script.

Links básicos:

https://developers.google.com/apps-script/guides/services/external

https://developers.google.com/apps-script/quickstart/docs

https://developers.google.com/apps-script/guides/sheets

https://developers.google.com/apps-script/quickstart/macros

https://developers.google.com/apps-script/reference/url-fetch/
 

Sunday, July 31, 2016

Installing ActionML PIO + UR - HBase problem


After following instructions to install ActionML's PIO on a single server, I get this error:

[INFO] [Console$] Inspecting PredictionIO...
[INFO] [Console$] PredictionIO 0.9.7-aml is installed at /usr/local/pio-aml
[INFO] [Console$] Inspecting Apache Spark...
[INFO] [Console$] Apache Spark is installed at /usr/local/spark
[INFO] [Console$] Apache Spark 1.6.1 detected (meets minimum requirement of 1.3.0)
[INFO] [Console$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)...
[INFO] [Storage$] Verifying Model Data Backend (Source: HDFS)...
[INFO] [Storage$] Verifying Event Data Backend (Source: HBASE)...
[ERROR] [RecoverableZooKeeper] ZooKeeper exists failed after 1 attempts
[ERROR] [ZooKeeperWatcher] hconnection-0x26fb4d06, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
[WARN] [ZooKeeperRegistry] Can't retrieve clusterId from Zookeeper
[ERROR] [StorageClient] Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
[ERROR] [Storage$] Error initializing storage client for source HBASE
[ERROR] [Console$] Unable to connect to all storage backends successfully. The following shows the error message from the storage backend.
[ERROR] [Console$] Data source HBASE was not properly initialized. (io.prediction.data.storage.StorageClientException)
[ERROR] [Console$] Dumping configuration of initialized storage backend sources. Please make sure they are correct.
[ERROR] [Console$] Source Name: ELASTICSEARCH; Type: elasticsearch; Configuration: HOME -> /usr/local/elasticsearch, HOSTS -> localhost, PORTS -> 9300, CLUSTERNAME -> some-cluster-name-thinkwrap, TYPE -> elasticsearch
[ERROR] [Console$] Source Name: HBASE; Type: (error); Configuration: (error)
[ERROR] [Console$] Source Name: HDFS; Type: hdfs; Configuration: TYPE -> hdfs, PATH -> hdfs://some-master:9000/models


Friday, July 15, 2016

Installing ActionML PIO + UR - surprise downloading dependency Scala jar


I'm following the upgrade document from http://www.actionml.com/docs/install to get ActionML installed/upgraded ( see previous posts ). When running ./make-distribution.sh I get this error:



[info] [SUCCESSFUL ] org.scala-lang#jline;2.10.4!jline.jar (792ms)
[info] downloading https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.4/jansi-1.4.jar ...
[info] [SUCCESSFUL ] org.fusesource.jansi#jansi;1.4!jansi.jar (232ms)
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] ::              FAILED DOWNLOADS            ::
[warn] :: ^ see resolution messages for details  ^ ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-sbt#ivy;0.13.7!ivy.jar
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
sbt.ResolveException: download failed: org.scala-sbt#ivy;0.13.7!ivy.jar
at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:278)
at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:175)
at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:157)
at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:151)
at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:151)
at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:128)
at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:56)
at sbt.IvySbt$$anon$4.call(Ivy.scala:64)
at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:93)
at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChanne


I have a fast and reliable Internet connection here at the office. Retrying resolved the problem.

ActionML PredictionIO upgrade - tricky details

I'm trying to install ActionML PredictionIO and the Universal Recommender ( see previous posts ). Now I'm following the documentation to upgrade at http://www.actionml.com/docs/install .
Some tricky details:
  - The documentation has a step with sudo su aml that will switch to the aml user. Later on it has steps such as rm -r ~/.ivy2, but you should remember not to run as the aml user!

- The documentation tells you to run ./make-distribution but they meant ./make-distribution.sh instead.


PredictionIO: Upgrading or Installing?


  After installing ActionML's PredictionIO + Universal Recommender with the "quick install" methods failed, I'm told by someone in the discussion group that I must "upgrade". And so I go to
http://www.actionml.com/docs/install








It's not clear if this page is for installing fresh or upgrading. The page has an "Upagrade"  section and a "Install Fresh" section after, in the middle of the page.