Remove Pig support

patch by Aleksey Yeschenko; reviewed by Sylvain Lebresne for
CASSANDRA-10542
This commit is contained in:
Aleksey Yeschenko 2015-10-16 13:23:20 +01:00
parent 56d835135b
commit 56cfc6ea35
26 changed files with 11 additions and 4066 deletions

View File

@ -24,7 +24,6 @@ test/data/serialization/*/*
doc/** doc/**
build.properties.default build.properties.default
test/data/** test/data/**
examples/pig/**
examples/triggers/build.xml examples/triggers/build.xml
examples/triggers/conf/* examples/triggers/conf/*
examples/hadoop_word_count/conf/log4j.properties examples/hadoop_word_count/conf/log4j.properties

View File

@ -1,4 +1,5 @@
3.0-rc2 3.0-rc2
* Remove Pig support (CASSANDRA-10542)
* Fix LogFile throws Exception when assertion is disabled (CASSANDRA-10522) * Fix LogFile throws Exception when assertion is disabled (CASSANDRA-10522)
* Revert CASSANDRA-7486, make CMS default GC, move GC config to * Revert CASSANDRA-7486, make CMS default GC, move GC config to
conf/jvm.options (CASSANDRA-10403) conf/jvm.options (CASSANDRA-10403)

View File

@ -84,7 +84,7 @@ Upgrading
(schema versions outputted by `nodetool describecluster` are all the same). (schema versions outputted by `nodetool describecluster` are all the same).
- Schema metadata is now stored in the new `system_schema` keyspace, and - Schema metadata is now stored in the new `system_schema` keyspace, and
legacy `system.schema_*` tables are now gone; see CASSANDRA-6717 for details. legacy `system.schema_*` tables are now gone; see CASSANDRA-6717 for details.
- Pig's CassandraStorage has been removed. Use CqlNativeStorage instead. - Pig's support has been removed.
- Hadoop BulkOutputFormat and BulkRecordWriter have been removed; use - Hadoop BulkOutputFormat and BulkRecordWriter have been removed; use
CqlBulkOutputFormat and CqlBulkRecordWriter instead. CqlBulkOutputFormat and CqlBulkRecordWriter instead.
- Hadoop ColumnFamilyInputFormat and ColumnFamilyOutputFormat have been removed; - Hadoop ColumnFamilyInputFormat and ColumnFamilyOutputFormat have been removed;

View File

@ -63,7 +63,6 @@
<property name="test.long.src" value="${test.dir}/long"/> <property name="test.long.src" value="${test.dir}/long"/>
<property name="test.burn.src" value="${test.dir}/burn"/> <property name="test.burn.src" value="${test.dir}/burn"/>
<property name="test.microbench.src" value="${test.dir}/microbench"/> <property name="test.microbench.src" value="${test.dir}/microbench"/>
<property name="test.pig.src" value="${test.dir}/pig"/>
<property name="dist.dir" value="${build.dir}/dist"/> <property name="dist.dir" value="${build.dir}/dist"/>
<property name="tmp.dir" value="${java.io.tmpdir}"/> <property name="tmp.dir" value="${java.io.tmpdir}"/>
@ -386,17 +385,12 @@
<dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster" version="1.0.3"> <dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster" version="1.0.3">
<exclusion groupId="asm" artifactId="asm"/> <!-- this is the outdated version 3.1 --> <exclusion groupId="asm" artifactId="asm"/> <!-- this is the outdated version 3.1 -->
</dependency> </dependency>
<dependency groupId="org.apache.pig" artifactId="pig" version="0.12.1">
<exclusion groupId="org.mortbay.jetty" artifactId="jetty"/>
<exclusion groupId="hsqldb" artifactId="hsqldb"/> <!-- outdated version -->
<exclusion groupId="antlr" artifactId="antlr"/> <!-- outdated version -->
</dependency>
<dependency groupId="net.java.dev.jna" artifactId="jna" version="4.0.0"/> <dependency groupId="net.java.dev.jna" artifactId="jna" version="4.0.0"/>
<dependency groupId="net.sourceforge.cobertura" artifactId="cobertura" version="${cobertura.version}"> <dependency groupId="net.sourceforge.cobertura" artifactId="cobertura" version="${cobertura.version}">
<exclusion groupId="xerces" artifactId="xercesImpl"/> <exclusion groupId="xerces" artifactId="xercesImpl"/>
<exclusion groupId="org.mortbay.jetty" artifactId="jetty"/> <!-- older version, also via hadoop-core + pig --> <exclusion groupId="org.mortbay.jetty" artifactId="jetty"/> <!-- older version, also via hadoop-core -->
<exclusion groupId="org.mortbay.jetty" artifactId="jetty-util"/> <!-- older version, also via hadoop-core + pig --> <exclusion groupId="org.mortbay.jetty" artifactId="jetty-util"/> <!-- older version, also via hadoop-core -->
<exclusion groupId="org.apache.ant" artifactId="ant"/> <!-- older version 1.8.3 --> <exclusion groupId="org.apache.ant" artifactId="ant"/> <!-- older version 1.8.3 -->
</dependency> </dependency>
<dependency groupId="org.jacoco" artifactId="org.jacoco.agent" version="${jacoco.version}"/> <dependency groupId="org.jacoco" artifactId="org.jacoco.agent" version="${jacoco.version}"/>
@ -467,7 +461,6 @@
<dependency groupId="org.apache.rat" artifactId="apache-rat"/> <dependency groupId="org.apache.rat" artifactId="apache-rat"/>
<dependency groupId="org.apache.hadoop" artifactId="hadoop-core"/> <dependency groupId="org.apache.hadoop" artifactId="hadoop-core"/>
<dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster"/> <dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster"/>
<dependency groupId="org.apache.pig" artifactId="pig"/>
<dependency groupId="com.google.code.findbugs" artifactId="jsr305"/> <dependency groupId="com.google.code.findbugs" artifactId="jsr305"/>
<dependency groupId="org.antlr" artifactId="antlr"/> <dependency groupId="org.antlr" artifactId="antlr"/>
<!-- TODO CASSANDRA-9543 <!-- TODO CASSANDRA-9543
@ -489,15 +482,6 @@
artifactId="cassandra-parent" artifactId="cassandra-parent"
version="${version}"/> version="${version}"/>
<dependency groupId="junit" artifactId="junit"/> <dependency groupId="junit" artifactId="junit"/>
<dependency groupId="org.apache.pig" artifactId="pig">
<exclusion groupId="xmlenc" artifactId="xmlenc"/>
<exclusion groupId="tomcat" artifactId="jasper-runtime"/>
<exclusion groupId="tomcat" artifactId="jasper-compiler"/>
<exclusion groupId="org.eclipse.jdt" artifactId="core"/>
<exclusion groupId="net.sf.kosmosfs" artifactId="kfs"/>
<exclusion groupId="hsqldb" artifactId="hsqldb"/>
<exclusion groupId="antlr" artifactId="antlr"/>
</dependency>
<!-- TODO CASSANDRA-9543 <!-- TODO CASSANDRA-9543
<dependency groupId="com.datastax.cassandra" artifactId="cassandra-driver-core" classifier="shaded"/> <dependency groupId="com.datastax.cassandra" artifactId="cassandra-driver-core" classifier="shaded"/>
--> -->
@ -524,7 +508,6 @@
<parent groupId="org.apache.cassandra" <parent groupId="org.apache.cassandra"
artifactId="cassandra-parent" artifactId="cassandra-parent"
version="${version}"/> version="${version}"/>
<!-- do NOT remove this, it breaks pig-test -->
<dependency groupId="joda-time" artifactId="joda-time"/> <dependency groupId="joda-time" artifactId="joda-time"/>
</artifact:pom> </artifact:pom>
@ -572,7 +555,6 @@
<!-- don't need hadoop classes to run, but if you use the hadoop stuff --> <!-- don't need hadoop classes to run, but if you use the hadoop stuff -->
<dependency groupId="org.apache.hadoop" artifactId="hadoop-core" optional="true"/> <dependency groupId="org.apache.hadoop" artifactId="hadoop-core" optional="true"/>
<dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster" optional="true"/> <dependency groupId="org.apache.hadoop" artifactId="hadoop-minicluster" optional="true"/>
<dependency groupId="org.apache.pig" artifactId="pig" optional="true"/>
<!-- TODO CASSANDRA-9543 <!-- TODO CASSANDRA-9543
<dependency groupId="com.datastax.cassandra" artifactId="cassandra-driver-core" classifier="shaded" optional="true"/> <dependency groupId="com.datastax.cassandra" artifactId="cassandra-driver-core" classifier="shaded" optional="true"/>
--> -->
@ -694,26 +676,6 @@
</copy> </copy>
</target> </target>
<target name="maven-ant-tasks-retrieve-pig-test" depends="maven-ant-tasks-init">
<artifact:dependencies pomRefId="test-deps-pom"
filesetId="test-dependency-jars"
sourcesFilesetId="test-dependency-sources"
cacheDependencyRefs="true"
dependencyRefsBuildFile="${build.dir}/test-dependencies.xml">
<remoteRepository refid="apache"/>
<remoteRepository refid="central"/>
<remoteRepository refid="java.net2"/>
</artifact:dependencies>
<copy todir="${build.dir.lib}/jars">
<fileset refid="test-dependency-jars"/>
<mapper type="flatten"/>
</copy>
<copy todir="${build.dir.lib}/sources">
<fileset refid="test-dependency-sources"/>
<mapper type="flatten"/>
</copy>
</target>
<!-- <!--
Generate thrift code. We have targets to build java because Generate thrift code. We have targets to build java because
Cassandra depends on it, and python because that is what the system Cassandra depends on it, and python because that is what the system
@ -1167,7 +1129,6 @@
<src path="${test.unit.src}"/> <src path="${test.unit.src}"/>
<src path="${test.long.src}"/> <src path="${test.long.src}"/>
<src path="${test.burn.src}"/> <src path="${test.burn.src}"/>
<src path="${test.pig.src}"/>
<src path="${test.microbench.src}"/> <src path="${test.microbench.src}"/>
</javac> </javac>
@ -1282,7 +1243,7 @@
</target> </target>
<target name="testold" depends="build-test" description="Execute unit tests"> <target name="testold" depends="build-test" description="Execute unit tests">
<testmacro inputdir="${test.unit.src}" exclude="**/pig/*.java" timeout="${test.timeout}"> <testmacro inputdir="${test.unit.src}" timeout="${test.timeout}">
<jvmarg value="-Dlegacy-sstable-root=${test.data}/legacy-sstables"/> <jvmarg value="-Dlegacy-sstable-root=${test.data}/legacy-sstables"/>
<jvmarg value="-Dinvalid-legacy-sstable-root=${test.data}/invalid-legacy-sstables"/> <jvmarg value="-Dinvalid-legacy-sstable-root=${test.data}/invalid-legacy-sstables"/>
<jvmarg value="-Dmigration-sstable-root=${test.data}/migration-sstables"/> <jvmarg value="-Dmigration-sstable-root=${test.data}/migration-sstables"/>
@ -1291,9 +1252,7 @@
<jvmarg value="-Djava.io.tmpdir=${tmp.dir}"/> <jvmarg value="-Djava.io.tmpdir=${tmp.dir}"/>
<jvmarg value="-Dcassandra.skip_sync=true" /> <jvmarg value="-Dcassandra.skip_sync=true" />
</testmacro> </testmacro>
<fileset dir="${test.unit.src}"> <fileset dir="${test.unit.src}" />
<exclude name="**/pig/*.java" />
</fileset>
</target> </target>
<!-- Will not generate a junit report or fail on error since it is called in parallel for test-compression <!-- Will not generate a junit report or fail on error since it is called in parallel for test-compression
@ -1337,7 +1296,7 @@
</macrodef> </macrodef>
<!-- <!--
Run named ant task with jacoco, such as "ant jacoco-run -Dtaskname=pig-test" Run named ant task with jacoco, such as "ant jacoco-run -Dtaskname=test"
the target run must enable the jacoco agent if usejacoco is 'yes' --> the target run must enable the jacoco agent if usejacoco is 'yes' -->
<target name="jacoco-run" description="run named task with jacoco instrumentation"> <target name="jacoco-run" description="run named task with jacoco instrumentation">
<condition property="runtask" value="${taskname}" else="test"> <condition property="runtask" value="${taskname}" else="test">
@ -1352,7 +1311,7 @@
ant testsome -Dtest.name=org.apache.cassandra.service.StorageServiceServerTest -Dtest.methods=testRegularMode,testGetAllRangesEmpty ant testsome -Dtest.name=org.apache.cassandra.service.StorageServiceServerTest -Dtest.methods=testRegularMode,testGetAllRangesEmpty
--> -->
<target name="testsome" depends="build-test" description="Execute specific unit tests" > <target name="testsome" depends="build-test" description="Execute specific unit tests" >
<testmacro inputdir="${test.unit.src}" exclude="**/pig/*.java" timeout="${test.timeout}"> <testmacro inputdir="${test.unit.src}" timeout="${test.timeout}">
<test name="${test.name}" methods="${test.methods}"/> <test name="${test.name}" methods="${test.methods}"/>
<jvmarg value="-Dlegacy-sstable-root=${test.data}/legacy-sstables"/> <jvmarg value="-Dlegacy-sstable-root=${test.data}/legacy-sstables"/>
<jvmarg value="-Dinvalid-legacy-sstable-root=${test.data}/invalid-legacy-sstables"/> <jvmarg value="-Dinvalid-legacy-sstable-root=${test.data}/invalid-legacy-sstables"/>
@ -1370,7 +1329,7 @@
<fileset file="${test.conf}/commitlog_compression.yaml"/> <fileset file="${test.conf}/commitlog_compression.yaml"/>
</concat> </concat>
<path id="all-test-classes-path"> <path id="all-test-classes-path">
<fileset dir="${test.unit.src}" excludes="**/pig/*.java" includes="**/${test.name}.java" /> <fileset dir="${test.unit.src}" includes="**/${test.name}.java" />
</path> </path>
<property name="all-test-classes" refid="all-test-classes-path"/> <property name="all-test-classes" refid="all-test-classes-path"/>
<testparallel testdelegate="testlist-compression" /> <testparallel testdelegate="testlist-compression" />
@ -1489,14 +1448,8 @@
</sequential> </sequential>
</target> </target>
<target name="pig-test" depends="build-test,maven-ant-tasks-retrieve-pig-test" description="Excute Pig tests">
<testmacro inputdir="${test.pig.src}"
timeout="1200000">
</testmacro>
</target>
<target name="test-all" <target name="test-all"
depends="eclipse-warnings,test,long-test,test-compression,pig-test,test-clientutil-jar" depends="eclipse-warnings,test,long-test,test-compression,test-clientutil-jar"
description="Run all tests except for those under test-burn" /> description="Run all tests except for those under test-burn" />
<!-- Use JaCoCo ant extension without needing externally saved lib --> <!-- Use JaCoCo ant extension without needing externally saved lib -->
@ -1716,7 +1669,7 @@
<target name="test" depends="build-test" description="Parallel Test Runner"> <target name="test" depends="build-test" description="Parallel Test Runner">
<path id="all-test-classes-path"> <path id="all-test-classes-path">
<fileset dir="${test.unit.src}" excludes="**/pig/*.java" includes="**/${test.name}.java" /> <fileset dir="${test.unit.src}" includes="**/${test.name}.java" />
</path> </path>
<property name="all-test-classes" refid="all-test-classes-path"/> <property name="all-test-classes" refid="all-test-classes-path"/>
<testparallel testdelegate="testlist"/> <testparallel testdelegate="testlist"/>
@ -1756,7 +1709,6 @@
<sourceFolder url="file://$MODULE_DIR$/tools/stress/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/tools/stress/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test/unit" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/test/unit" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test/long" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/test/long" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test/pig" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test/microbench" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/test/microbench" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/.idea" /> <excludeFolder url="file://$MODULE_DIR$/.idea" />
@ -1964,7 +1916,6 @@
<classpathentry kind="src" path="interface/thrift/gen-java"/> <classpathentry kind="src" path="interface/thrift/gen-java"/>
<classpathentry kind="src" output="build/test/classes" path="test/unit"/> <classpathentry kind="src" output="build/test/classes" path="test/unit"/>
<classpathentry kind="src" output="build/test/classes" path="test/long"/> <classpathentry kind="src" output="build/test/classes" path="test/long"/>
<classpathentry kind="src" output="build/test/classes" path="test/pig"/>
<classpathentry kind="src" output="build/test/classes" path="test/resources" /> <classpathentry kind="src" output="build/test/classes" path="test/resources" />
<classpathentry kind="src" path="tools/stress/src"/> <classpathentry kind="src" path="tools/stress/src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

View File

@ -1,118 +0,0 @@
A Pig storage class that reads all columns from a given ColumnFamily, or writes
properly formatted results into a ColumnFamily.
Getting Started
===============
First build and start a Cassandra server with the default
configuration and set the PIG_HOME and JAVA_HOME environment
variables to the location of a Pig >= 0.7.0 install and your Java
install.
If you would like to run using the Hadoop backend, you should
also set PIG_CONF_DIR to the location of your Hadoop config.
Finally, set the following as environment variables (uppercase,
underscored), or as Hadoop configuration variables (lowercase, dotted):
* PIG_INITIAL_ADDRESS or cassandra.thrift.address : initial address to connect to
* PIG_RPC_PORT or cassandra.thrift.port : the port thrift is listening on
* PIG_PARTITIONER or cassandra.partitioner.class : cluster partitioner
For example, against a local node with the default settings, you'd use:
export PIG_INITIAL_ADDRESS=localhost
export PIG_RPC_PORT=9160
export PIG_PARTITIONER=org.apache.cassandra.dht.Murmur3Partitioner
These properties can be overridden with the following if you use different clusters
for input and output:
* PIG_INPUT_INITIAL_ADDRESS : initial address to connect to for reading
* PIG_INPUT_RPC_PORT : the port thrift is listening on for reading
* PIG_INPUT_PARTITIONER : cluster partitioner for reading
* PIG_OUTPUT_INITIAL_ADDRESS : initial address to connect to for writing
* PIG_OUTPUT_RPC_PORT : the port thrift is listening on for writing
* PIG_OUTPUT_PARTITIONER : cluster partitioner for writing
CassandraStorage
================
The CassandraStorage class is for any non-CQL3 ColumnFamilies you may have. For CQL3 support, refer to the CqlNativeStorage section.
examples/pig$ bin/pig_cassandra -x local example-script.pig
This will run the test script against your Cassandra instance
and will assume that there is a MyKeyspace/MyColumnFamily with some
data in it. It will run in local mode (see pig docs for more info).
If you'd like to get to a 'grunt>' shell prompt, run:
examples/pig$ bin/pig_cassandra -x local
Once the 'grunt>' shell has loaded, try a simple program like the
following, which will determine the top 50 column names:
grunt> rows = LOAD 'cassandra://MyKeyspace/MyColumnFamily' USING CassandraStorage();
grunt> cols = FOREACH rows GENERATE flatten(columns);
grunt> colnames = FOREACH cols GENERATE $0;
grunt> namegroups = GROUP colnames BY (chararray) $0;
grunt> namecounts = FOREACH namegroups GENERATE COUNT($1), group;
grunt> orderednames = ORDER namecounts BY $0 DESC;
grunt> topnames = LIMIT orderednames 50;
grunt> dump topnames;
Slices on columns can also be specified:
grunt> rows = LOAD 'cassandra://MyKeyspace/MyColumnFamily?slice_start=C2&slice_end=C4&limit=1&reversed=true' USING CassandraStorage();
Binary values for slice_start and slice_end can be escaped such as '\u0255'
Outputting to Cassandra requires the same format from input, so the simplest example is:
grunt> rows = LOAD 'cassandra://MyKeyspace/MyColumnFamily' USING CassandraStorage();
grunt> STORE rows into 'cassandra://MyKeyspace/MyColumnFamily' USING CassandraStorage();
Which will copy the ColumnFamily. Note that the destination ColumnFamily must
already exist for this to work.
See the example in test/ to see how schema is inferred.
Advanced Options for CassandraStorage
=====================================
The following environment variables default to false but can be set to true to enable them:
PIG_WIDEROW_INPUT: this enables loading of rows with many columns without
incurring memory pressure. All columns will be in a bag and indexes are not
supported. This can also be set in the LOAD url by adding
the 'widerows=true' parameter.
PIG_USE_SECONDARY: this allows easy use of secondary indexes within your
script, by appending every index to the schema as 'index_$name', allowing
filtering of loaded rows with a statement like "FILTER rows BY index_color eq
'blue'" if you have an index called 'color' defined. This
can also be set in the LOAD url by adding the
'use_secondary=true' parameter.
PIG_INPUT_SPLIT_SIZE: this sets the split size passed to Hadoop, controlling
the amount of mapper tasks created. This can also be set in the LOAD url by
adding the 'split_size=X' parameter, where X is an integer amount for the size.
CqlNativeStorage
================
The CqlNativeStorage class is somewhat similar to CassandraStorage, but it can work with CQL3-defined ColumnFamilies. The main difference is in the URL format:
cql://[username:password@]<keyspace>/<columnfamily>
[?[page_size=<size>][&columns=<col1,col2>][&output_query=<prepared_statement>]
[&where_clause=<clause>][&split_size=<size>][&partitioner=<partitioner>][&use_secondary=true|false]
[&init_address=<host>][&native_port=<native_port>][&core_conns=<core_conns>]
[&max_conns=<max_conns>][&min_simult_reqs=<min_simult_reqs>][&max_simult_reqs=<max_simult_reqs>]
[&native_timeout=<native_timeout>][&native_read_timeout=<native_read_timeout>][&rec_buff_size=<rec_buff_size>]
[&send_buff_size=<send_buff_size>][&solinger=<solinger>][&tcp_nodelay=<tcp_nodelay>][&reuse_address=<reuse_address>]
[&keep_alive=<keep_alive>][&auth_provider=<auth_provider>][&trust_store_path=<trust_store_path>]
[&key_store_path=<key_store_path>][&trust_store_password=<trust_store_password>]
[&key_store_password=<key_store_password>][&cipher_suites=<cipher_suites>][&input_cql=<input_cql>]
[columns=<columns>][where_clause=<where_clause>]]
Which in grunt, the simplest example would look like:
grunt> rows = LOAD 'cql://MyKeyspace/MyColumnFamily' USING CqlNativeStorage();
CqlNativeStorage handles wide rows automatically and thus has no separate flag for this.

View File

@ -1,46 +0,0 @@
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
cwd=`dirname $0`
cassandra_home="$cwd/../../../"
# general jars.
for jar in $cassandra_home/lib/*.jar $cassandra_home/build/lib/jars/*.jar $cassandra_home/build/apache-cassandra*.jar; do
CLASSPATH=$CLASSPATH:$jar
done
if [ "x$PIG_HOME" = "x" ]; then
echo "PIG_HOME not set: requires Pig >= 0.7.0" >&2
exit 1
fi
# pig jar.
for jar in $PIG_HOME/*.jar; do
PIG_JAR=$jar
done
echo "Using $PIG_JAR."
if [ ! -e $PIG_JAR ]; then
echo "Unable to locate Pig jar" >&2
exit 1
fi
CLASSPATH=$CLASSPATH:$PIG_JAR
export PIG_CLASSPATH=$PIG_CLASSPATH:$CLASSPATH
export PIG_OPTS="$PIG_OPTS -Dudf.import.list=org.apache.cassandra.hadoop.pig"
$PIG_HOME/bin/pig $*

View File

@ -1,24 +0,0 @@
CREATE KEYSPACE libdata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
USE libdata;
CREATE TABLE libout ("STABR" TEXT, "FSCSKEY" TEXT, "FSCS_SEQ" TEXT,
"LIBID" TEXT, "LIBNAME" TEXT, "ADDRESS" TEXT, "CITY" TEXT,
"ZIP" TEXT, "ZIP4" TEXT, "CNTY" TEXT, "PHONE" TEXT, "C_OUT_TY" TEXT,
"C_MSA" TEXT, "SQ_FEET" INT, "F_SQ_FT" TEXT, "L_NUM_BM" INT,
"F_BKMOB" TEXT, "HOURS" INT, "F_HOURS" TEXT, "WKS_OPEN" INT,
"F_WKSOPN" TEXT, "YR_SUB" INT, "STATSTRU" INT, "STATNAME" INT,
"STATADDR" INT, "LONGITUD" FLOAT, "LATITUDE" FLOAT, "FIPSST" INT,
"FIPSCO" INT, "FIPSPLAC" INT, "CNTYPOP" INT, "LOCALE" TEXT,
"CENTRACT" FLOAT, "CENBLOCK" INT, "CDCODE" TEXT, "MAT_CENT" TEXT,
"MAT_TYPE" INT, "CBSA" INT, "MICROF" TEXT,
PRIMARY KEY ("FSCSKEY", "FSCS_SEQ"));
COPY libout ("STABR","FSCSKEY","FSCS_SEQ","LIBID","LIBNAME",
"ADDRESS","CITY","ZIP","ZIP4","CNTY","PHONE","C_OUT_TY",
"C_MSA","SQ_FEET","F_SQ_FT","L_NUM_BM","F_BKMOB","HOURS",
"F_HOURS","WKS_OPEN","F_WKSOPN","YR_SUB","STATSTRU","STATNAME",
"STATADDR","LONGITUD","LATITUDE","FIPSST","FIPSCO","FIPSPLAC",
"CNTYPOP","LOCALE","CENTRACT","CENBLOCK","CDCODE","MAT_CENT",
"MAT_TYPE","CBSA","MICROF") FROM 'libdata.csv' WITH HEADER=TRUE;
CREATE TABLE libsqft (year INT, state TEXT, sqft BIGINT, PRIMARY KEY (year, state));

View File

@ -1,11 +0,0 @@
-- CqlNativeStorage
libdata = LOAD 'cql://libdata/libout' USING CqlNativeStorage();
book_by_mail = FILTER libdata BY C_OUT_TY == 'BM';
libdata_buildings = FILTER libdata BY SQ_FEET > 0;
state_flat = FOREACH libdata_buildings GENERATE STABR AS State,SQ_FEET AS SquareFeet;
state_grouped = GROUP state_flat BY State;
state_footage = FOREACH state_grouped GENERATE group AS State, SUM(state_flat.SquareFeet) AS TotalFeet:int;
insert_format= FOREACH state_footage GENERATE TOTUPLE(TOTUPLE('year',2011),TOTUPLE('state',State)),TOTUPLE(TotalFeet);
STORE insert_format INTO 'cql://libdata/libsqft?output_query=UPDATE%20libdata.libsqft%20SET%20sqft%20%3D%20%3F' USING CqlNativeStorage;

View File

@ -1,9 +0,0 @@
-- CassandraStorage
rows = LOAD 'cassandra://MyKeyspace/MyColumnFamily' USING CassandraStorage();
cols = FOREACH rows GENERATE flatten(columns);
colnames = FOREACH cols GENERATE $0;
namegroups = GROUP colnames BY (chararray) $0;
namecounts = FOREACH namegroups GENERATE COUNT($1), group;
orderednames = ORDER namecounts BY $0 DESC;
topnames = LIMIT orderednames 50;
dump topnames;

View File

@ -1,200 +0,0 @@
KS,KS0189,002,KS0037,CALDWELL PUBLIC LIBRARY,120 S. MAIN ST.,CALDWELL,67022,1414,SUMNER,6208456879,CE,NO,4500,R_11,0,R_11,1200,R_11,50,R_11,2012,00,00,00,-97.606964,37.03116,20,191,09900,23835,43,9623,3078,2004,0,1,48620,0
CA,CA0152,004,M748,SOLIZ LIBRARY,2820 JOURDAN ST.,OXNARD,93036,1611,VENTURA,8054854515,BR,CC,3030,R_11,0,R_11,1227,R_11,52,R_11,2012,00,00,00,-119.168424,34.2372,06,111,22370,831126,21,50.02999878,2005,0626,0,1,37100,0
WV,WV0023,002,22,MORGANTOWN PUBLIC LIBRARY,373 SPRUCE STREET,MORGANTOWN,26505,5564,MONONGALIA,3042917425,CE,NO,24140,R_11,0,R_11,3016,R_11,52,R_11,2012,00,00,00,-79.954276,39.630204,54,061,55756,98613,13,107,1011,5401,0,1,34060,0
IL,IL0603,002,3067300,VESPASIAN WARNER PUBLIC LIBRARY DISTRICT,310 NORTH QUINCY STREET,CLINTON,61727,1300,DE WITT,2179355174,CE,NO,36000,R_11,0,R_11,3172,R_11,-1,U_11,2012,00,00,00,-88.961745,40.154608,17,039,15001,16528,32,9717,2032,1713,0,1,14010,0
NC,NC0032,017,C-FORSYTH-Y,YWCA BEST CHOICE CENTER,1031 HIGHLAND AVE,WINSTON-SALEM,27101,3108,FORSYTH,3367220597,BR,CC,750,R_11,0,R_11,312,R_11,52,R_11,2012,00,00,00,-80.233147,36.108588,37,067,75000,354454,12,6,2018,3712,0,1,49180,0
NY,NY0578,002,7200446540,TUXEDO PARK LIBRARY,227 ROUTE 17,TUXEDO PARK,10987,4405,ORANGE,8453512207,CE,NC,9000,R_11,0,R_11,3094,R_11,52,R_11,2012,00,00,00,-74.18461,41.193192,36,071,00000,374438,41,149,3005,3618,0,5,35620,0
IL,IL0508,002,3063300,STEELEVILLE AREA PUBLIC LIBRARY DISTRICT,625 SOUTH SPARTA STREET,STEELEVILLE,62288,2147,RANDOLPH,6189659732,CE,NO,4998,R_11,0,R_11,2630,R_11,-1,U_11,2012,00,00,00,-89.658669,38.003021,17,157,72468,33262,32,9511,4060,1712,0,1,0,.
NY,NY0601,002,7200592060,SUNSHINE HALL FREE LIBRARY,14 PROCTOR ROAD,ELDRED,12732,0157,SULLIVAN,8455576258,CE,NO,2300,R_11,0,R_11,1250,R_11,52,R_11,2012,00,00,00,-74.882528,41.526061,36,105,00000,77079,42,9524,1021,3619,0,1,0,.
FL,FL0001,012,FL0001-012,REDDICK PUBLIC LIBRARY,15150 N.W. GAINESVILLE ROAD,REDDICK,32686,3221,MARION,3524382566,BR,NC,2496,R_11,0,R_11,1228,R_11,52,R_11,2012,00,00,00,-82.197543,29.369123,12,083,59675,332472,42,2,2056,1205,0,1,36100,0
NC,NC0010,009,R-HYCONEECHEE-CC,CARRBORO CYBRARY,100 N GREENSBORO ST,CARRBORO,27510,2016,ORANGE,9199187387,BR,NC,1060,R_11,0,R_11,1560,R_11,52,R_11,2012,00,00,15,-79.072256,35.910375,37,135,10620,135418,21,107.0500031,3021,3704,0,1,20500,0
WV,WV0077,004,076B,COAL RIVER,494 JOHN SLACK CIRCLE,RACINE,25165,M,BOONE,3048378437,BR,NO,1200,R_11,0,R_11,1820,R_11,52,R_11,2012,00,00,00,-81.656444,38.145905,54,005,00000,24459,41,9582,3074,5403,X,14,16620,0
TX,TX0279,002,360,SHEPHERD PUBLIC LIBRARY,30 N LIBERTY ST,SHEPHERD,77371,2460,SAN JACINTO,9366283515,CE,NC,2668,R_11,0,R_11,1626,R_11,52,R_11,2012,00,00,00,-94.997618,30.498398,48,407,67424,26876,42,2001.01001,1011,4808,0,1,0,.
MI,MI0261,002,MI0261-002,SHIAWASSEE DISTRICT LIBRARY,502 WEST MAIN STREET,OWOSSO,48867,2687,SHIAWASSEE,9897255134,CE,NO,8400,R_11,0,R_11,2868,R_11,52,R_11,2012,00,00,00,-84.177198,42.997558,26,155,61940,69934,32,306,1007,2604,0,1,37020,1
NE,NE0210,002,235T,SPENCER TOWNSHIP LIBRARY,110 WEST MAIN STREET,SPENCER,68777,0189,BOYD,4025891331,CE,NO,1750,R_11,0,R_11,546,R_11,52,R_11,2012,00,00,00,-98.701432,42.874026,31,015,46275,2081,43,9758,1234,3103,0,1,0,.
ND,ND0012,002,ND0012-002,CARNEGIE REGIONAL LIBRARY,49 WEST 7TH STREET,GRAFTON,58237,1050,WALSH,7013522754,CE,CC,8692,R_11,0,R_11,2000,R_11,50,R_11,2012,00,00,00,-97.41183,48.417585,38,099,31820,11032,33,9580,1077,3800,0,1,0,.
CT,CT0193,002,3900,EASTFORD PUBLIC LIBRARY,179 EASTFORD RD.,EASTFORD,06242,0908,WINDHAM,8609740125,CE,NO,1512,R_11,0,R_11,1216,R_11,52,R_11,2012,00,00,00,-72.080012,41.901001,09,015,00000,118205,42,9022,1049,0902,0,1,49340,0
IL,IL0421,002,3053900,PECATONICA PUBLIC LIBRARY DISTRICT,400 WEST ELEVENTH STREET,PECATONICA,61063,9173,WINNEBAGO,8152392616,CE,NC,11800,R_11,0,R_11,2080,R_11,-1,U_11,2012,00,00,00,-89.365175,42.304798,17,201,58408,293660,42,43,2010,1716,0,1,40420,0
AR,AR0019,002,AR019-002,LYDA MILLER PUBLIC LIBRARY,2609 HIGHWAY 367 S,BALD KNOB,72010,0287,WHITE,5017245452,BR,NO,2100,R_11,0,R_11,-1,U_11,52,R_11,2012,00,06,00,-91.563371,35.315974,05,145,03280,78089,32,706,4050,0502,0,1,42620,1
TX,TX0473,002,513,ELGIN PUBLIC LIBRARY,404 N MAIN ST,ELGIN,78621,2625,BASTROP,5122815678,CE,NC,12738,R_11,0,R_11,1983,R_11,52,R_11,2012,00,00,00,-97.371621,30.350555,48,021,23044,75028,32,9502,2001,4810,0,1,12420,0
MA,MA0164,002,MALDEN,MALDEN PUBLIC LIBRARY,36 SALEM ST.,MALDEN,02148,5208,MIDDLESEX,7813240218,CE,NC,44000,R_11,0,R_11,3126,R_11,52,R_11,2012,00,00,00,-71.066333,42.427158,25,017,37875,1522050,21,3416,5007,2505,0,1,14460,0
WI,WI0409,002,WI0409,LOWELL PUBLIC LIBRARY,105 N. RIVER ST.,LOWELL,53557,0015,DODGE,9209275700,CE,NO,900,R_11,0,R_11,1040,R_11,52,R_11,2012,00,00,00,-88.79318,43.345758,55,027,00000,88721,42,9618,1101,5505,X,15,13180,1
PA,PA0413,002,901630213,BURGETTSTOWN COMMUNITY LIBRARY,2 KERR ST,BURGETTSTOWN,15021,1127,WASHINGTON,7249479780,CE,NC,6781,R_11,0,R_11,2392,R_11,52,R_11,2012,00,00,00,-80.389683,40.379256,42,125,10224,208170,42,7127,1030,4218,0,1,38300,0
NE,NE0091,002,101C,GILBERT PUBLIC LIBRARY,628 SECOND STREET,FRIEND,68359,1308,SALINE,4029475081,CE,NO,1678,R_11,0,R_11,1196,R_11,52,R_11,2012,00,00,00,-97.285879,40.653724,31,151,17775,14398,43,9607,2058,3103,0,1,0,.
KS,KS0028,002,KS0160,KANOPOLIS PUBLIC LIBRARY,221 N. KANSAS,KANOPOLIS,67454,0205,ELLSWORTH,7854723053,CE,NO,897,R_11,0,R_11,832,R_11,52,R_11,2012,00,00,00,-98.157901,38.711743,20,053,35950,6478,42,866,2294,2001,0,1,0,.
IL,IL0098,059,3010857,PORTAGE-CRAGIN BRANCH,5108 WEST BELMONT AVENUE,CHICAGO,60641,4206,COOK,3127440152,BR,CC,14000,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-87.754563,41.938765,17,031,14000,5214098,11,1510.01001,2008,1704,0,1,16980,0
PA,PA0083,002,905620545,SHEFFIELD TOWNSHIP LIBRARY,20 LEATHER ST,SHEFFIELD,16347,0607,WARREN,8149683439,CE,NO,1131,R_11,0,R_11,1352,R_11,52,R_11,2012,00,00,00,-79.033263,41.701956,42,123,69984,41480,42,9712,3019,4205,0,1,47620,1
UT,UT0072,001,UT0072-001,SALEM CITY LIBRARY,59 SOUTH MAIN STREET,SALEM,84653,9601,UTAH,8014232622,CE,NC,4150,R_11,0,R_11,2216,R_11,52,R_11,2012,00,00,00,-111.673401,40.053702,49,049,65770,530104,32,104.0699997,2016,4903,0,1,39340,0
NJ,NJ0048,002,NJ0048-002,ORADELL PUBLIC LIBRARY,375 KINDERKAMACK ROAD,ORADELL,07649,2122,BERGEN,2012622613,CE,NC,16000,R_11,0,R_11,3016,R_11,52,R_11,2012,00,00,00,-74.031827,40.953183,34,003,54990,912773,21,400.019989,4006,3405,0,1,35620,0
WI,WI0191,002,WI0191,MENOMONEE FALLS PUBLIC LIBRARY,W156N8436 PILGRIM RD.,MENOMONEE FALLS,53051,3140,WAUKESHA,2625328930,CE,NC,52951,R_11,0,R_11,3328,R_11,52,R_11,2012,00,00,00,-88.103683,43.170852,55,133,51000,390701,21,2001.030029,3023,5505,0,1,33340,0
NC,NC0033,002,C-FRANKLIN-F,FRANKLIN COUNTY LIBRARY,906 N MAIN ST,LOUISBURG,27549,2199,FRANKLIN,9194962111,CE,NC,6000,R_11,0,R_11,2704,R_11,52,R_11,2012,00,00,15,-78.296077,36.112774,37,069,39360,61181,32,603.0100098,1018,3701,0,1,39580,0
FL,FL0042,006,FL0042-006,DUNBAR JUPITER HAMMON PUBLIC LIBRARY,3095 BLOUNT STREET,FORT MYERS,33916,4100,LEE,2395334150,BR,NC,11400,R_11,0,R_11,1992,R_11,52,R_11,2012,00,00,00,-81.84986,26.642837,12,071,24125,631602,13,5.019999981,2011,1219,0,1,15980,0
LA,LA0038,005,LA0038,VERNON PARISH LIBRARY BOOKMOBILE,1401 NOLAN TRACE,LEESVILLE,71446,8378,VERNON,3372392027,BS,NO,-3,U_11,1,R_11,1248,R_11,52,R_11,2012,00,00,00,-93.133117,31.328122,22,115,00000,52178,43,9501,1052,2204,2,15,22860,1
FL,FL0058,002,FL0058-002,NORTH PALM BEACH PUBLIC LIBRARY,303 ANCHORAGE DRIVE,NORTH PALM BEACH,33408,4990,PALM BEACH,5618413383,CE,NC,24893,R_11,0,R_11,3024,R_11,52,R_11,2012,00,00,00,-80.057184,26.810361,12,099,49600,1337512,21,7.019999981,1015,1218,0,1,33100,0
MO,MO0037,002,MO0036-002,UNIVERSITY CITY PUBLIC LIBRARY,6701 DELMAR BLVD,UNIVERSITY CITY,63130,3199,ST. LOUIS,3147273150,CE,NC,43000,R_11,0,R_11,3744,R_11,52,R_11,2012,00,00,00,-90.308719,38.656351,29,189,75220,999321,21,2161,2010,2901,0,1,41180,0
TX,TX0582,002,575,MCMULLEN MEMORIAL LIBRARY,900 N MAIN ST,HUNTINGTON,75949,M,ANGELINA,9368764516,CE,NO,2500,R_11,0,R_11,1792,R_11,52,R_11,2012,00,00,00,-94.572496,31.285469,48,005,35492,87276,42,13,1016,4801,0,1,31260,1
CT,CT0109,002,9902,ATWATER MEMORIAL LIBRARY,1720 FOXON RD.,NORTH BRANFORD,06471,0258,NEW HAVEN,2033156020,CE,NC,13000,R_11,0,R_11,2830,R_11,52,R_11,2012,00,00,00,-72.765106,41.328739,09,009,00000,862812,21,1861,1010,0903,0,1,35300,0
AZ,AZ0064,011,BR-GEASA,GEASA-MARANA BRANCH LIBRARY,13370 LON ADAMS ROAD,MARANA,85653,9050,PIMA,5205945255,BR,NC,2900,R_11,0,R_11,2034,R_11,52,R_11,2012,00,00,00,-111.208324,32.449152,04,019,44270,987573,42,44.29999924,2025,0401,0,1,46060,0
TX,TX0216,005,30.53,THEODORE JOHNS BRANCH LIBRARY,4255 FANNETT RD,BEAUMONT,77705,M,JEFFERSON,4098425223,BR,CC,11970,R_11,0,R_11,3132,R_11,52,R_11,2012,00,00,00,-94.129488,30.045033,48,245,07000,253160,12,22,2023,4814,0,1,13140,0
LA,LA0044,012,49,GENEALOGY BRANCH & ADM. OFFICE,200 EAST MULBERRY STREET,AMITE,70422,2524,TANGIPAHOA,9857487559,BR,NO,8000,R_11,0,R_11,1716,R_11,52,R_11,2012,00,00,00,-90.506645,30.728051,22,105,01885,122519,32,9534,3091,2205,0,1,25220,0
MD,MD0024,005,MD0024-005,POCOMOKE BRANCH,301 MARKET ST.,POCOMOKE CITY,21851,1113,WORCESTER,4109570878,BR,NO,6728,R_11,0,R_11,2136,R_11,52,R_11,2012,00,00,00,-75.566713,38.074163,24,047,62475,51446,32,9515,3032,2401,0,1,41540,0
IL,IL0318,003,3043000,MARION CARNEGIE LIBRARY,206 SOUTH MARKET STREET,MARION,62959,2516,WILLIAMSON,6189935935,CE,NO,21000,R_11,0,R_11,3129,R_11,-1,U_11,2012,00,00,00,-88.927162,37.729836,17,199,46916,66680,33,211,3029,1712,0,1,16060,0
IA,IA0307,002,RD,FONTANELLE PUBLIC LIBRARY,303 WASHINGTON,FONTANELLE,50846,0387,ADAIR,6417454981,CE,NO,2000,R_11,0,R_11,1040,R_11,52,R_11,2012,00,00,00,-94.563977,41.289591,19,001,28290,7572,43,9603,4125,1903,0,1,0,.
PR,PR0010,001,BP0009,MOROVIS ELECTRONIC MUNICIPAL LIBRARY,"JOSE DEL RIO ST., CORNER OF BETANCE",MOROVIS,00687,M,MOROVIS,7878626161,CE,NO,-1,U_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-66.427046,18.340777,72,101,29555,32753,21,9553,3018,7298,X,14,41980,0
OH,OH0188,002,288C,IDA RUPP PUBLIC LIBRARY,310 MADISON ST.,PORT CLINTON,43452,1921,OTTAWA,4197323212,CE,NC,17075,R_11,0,R_11,3119,R_11,52,R_11,2012,00,00,00,-82.941131,41.510222,39,123,64150,41435,31,506,2000,3909,0,1,38840,1
MD,MD0008,004,MD0008-004,NORTH EAST BRANCH,106 W. CECIL AVE.,NORTH EAST,21901,3506,CECIL,4109966269,BR,NO,2800,R_11,0,R_11,2600,R_11,52,R_11,2012,00,00,00,-75.945126,39.60096,24,015,56450,101628,31,309.0299988,1067,2401,0,1,37980,0
LA,LA0055,007,59,DELMONT GARDENS BRANCH,3351 LORRAINE STREET,BATON ROUGE,70805,2724,EAST BATON ROUGE,2253547040,BR,CC,19267,R_11,0,R_11,3432,R_11,52,R_11,2012,00,00,00,-91.156007,30.496636,22,033,05000,441602,12,3,1023,2202,0,1,12940,0
VA,VA0014,005,VA0014-005,PORTER BRANCH,2001 PARKWAY BOULEVARD,STAFFORD,22554,3972,STAFFORD,5406594909,BR,NO,23000,R_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-77.447472,38.464856,51,179,00000,132246,21,102.1399994,2007,5101,0,1,47900,0
WI,WI0198,002,WI0198,MILTON PUBLIC LIBRARY,"430 E. HIGH ST., #100",MILTON,53563,1579,ROCK,6088687462,CE,NC,8000,R_11,0,R_11,2756,R_11,52,R_11,2012,00,00,00,-88.944389,42.77298,55,105,52200,160067,23,31,4016,5501,0,1,27500,0
IA,IA0544,002,IA0563,WASHTA PUBLIC LIBRARY,100 S 5TH AVE,WASHTA,51061,1016,CHEROKEE,7124476546,CE,NO,1353,R_11,0,R_11,1222,R_11,52,R_11,2012,00,00,15,-95.720114,42.57533,19,035,82380,12029,43,803,2316,1904,0,1,0,.
NH,NH0174,002,NH895,GILMAN LIBRARY,100 MAIN STREET,ALTON,03809,4618,BELKNAP,6038752550,CE,NO,6996,R_11,0,R_11,1872,R_11,52,R_11,2012,00,00,00,-71.213211,43.452041,33,001,00980,60189,42,9665,2060,3301,0,1,29060,1
CT,CT0175,002,15900,WETHERSFIELD PUBLIC LIBRARY,515 SILAS DEANE HIGHWAY,WETHERSFIELD,06109,2216,HARTFORD,8605292665,CE,NC,32877,R_11,0,R_11,2968,R_11,52,R_11,2012,00,00,00,-72.663363,41.711653,09,003,84970,896248,21,4922,1007,0901,0,1,25540,0
NH,NH0030,002,NH89126,MAXFIELD PUBLIC LIBRARY,8 ROUTE 129,LOUDON,03307,0814,MERRIMACK,6037985153,CE,NO,6800,R_11,0,R_11,1768,R_11,52,R_11,2012,00,00,00,-71.467819,43.286141,33,013,43300,146614,42,360,2046,3302,0,1,18180,1
NY,NY0005,015,0800000000,NORTH PARK BRANCH LIBRARY,975 HERTEL AVENUE,BUFFALO,14216,2201,ERIE,7168753748,BR,CC,3967,R_11,0,R_11,1568,R_11,52,R_11,2012,00,00,00,-78.871968,42.94775,36,029,11000,919627,11,50,1005,3626,0,1,15380,0
OK,OK0018,002,24,CHANDLER PUBLIC LIBRARY,1021 S MANVEL,CHANDLER,74834,3853,LINCOLN,4052583204,CE,NO,2500,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-96.880778,35.700289,40,081,13500,34293,32,9617,4057,4003,0,1,36420,0
ND,ND0037,002,ND0037-002,HANKINSON PUBLIC LIBRARY,315 MAIN AVENUE S,HANKINSON,58041,0244,RICHLAND,7012427929,CE,NO,400,R_11,0,R_11,1198,R_11,51,R_11,2012,00,00,00,-96.902081,46.069547,38,077,34900,16261,43,9714,2037,3800,0,1,47420,1
IN,IN0207,009,8412,TRAFALGAR BRANCH,424 TOWER STREET,TRAFALGAR,46181,8876,JOHNSON,3178789560,BR,NO,19000,R_11,0,R_11,3172,R_11,52,R_11,2012,00,00,00,-86.148687,39.413997,18,081,76310,141439,41,6114,2051,1809,0,1,26900,0
KY,KY0071,003,MARION,MARION COUNTY PUBLIC LIBRARY,201 EAST MAIN STREET,LEBANON,40033,1133,MARION,2706924698,BS,NO,-3,U_11,1,R_11,1012,R_11,44,R_11,2012,00,00,00,-85.250194,37.570737,21,155,44344,20049,32,9702,2017,2101,0,1,0,.
NY,NY0562,033,6800310000,LEFRAK CITY,98-30 57 AVENUE,CORONA,11368,4696,QUEENS,7185927677,BR,CC,18000,R_11,0,R_11,1820,R_11,52,R_11,2012,00,00,00,-73.861226,40.738002,36,081,51000,2256438,11,455,3000,3614,4,15,35620,0
NC,NC0014,003,R-PETTIGREW-P,PERQUIMANS COUNTY LIBRARY,110 W ACADEMY ST,HERTFORD,27944,1306,PERQUIMANS,2524265319,BR,NO,5320,R_11,0,R_11,2278,R_11,52,R_11,2012,00,00,15,-76.471096,36.188915,37,143,30900,13458,42,9202.009766,3019,3701,0,1,21020,1
IL,IL0140,002,3022800,DIVERNON TOWNSHIP LIBRARY,221 SOUTH SECOND STREET,DIVERNON,62530,0140,SANGAMON,2176283813,CE,NO,1300,R_11,0,R_11,1560,R_11,-1,U_11,2012,00,00,00,-89.65852,39.565293,17,167,20045,198949,41,33,4122,1718,0,1,44100,0
GA,GA0010,005,6282PICKENS,PICKENS COUNTY PUBLIC LIBRARY,100 LIBRARY LANE,JASPER,30143,1364,PICKENS,7066925411,BR,NO,11000,R_11,0,R_11,3320,R_11,52,R_11,2012,00,00,00,-84.420188,34.467478,13,227,41932,29431,32,502,1040,1309,2,14,12060,0
MN,MN0085,002,S1310,BLOOMING PRAIRIE BRANCH LIBRARY,138 HIGHWAY AVE SOUTH,BLOOMING PRAIRIE,55917,0187,STEELE,5075837750,BR,NO,3000,R_11,0,R_11,2213,R_11,52,R_11,2012,00,00,00,-93.049227,43.866202,27,147,06580,36541,43,9608,4004,2701,0,5,36940,1
MD,MD0003,039,MD0003,SOUTHEAST ANCHOR BRANCH,3601 EASTERN AVENUE,BALTIMORE,21224,M,BALTIMORE CITY,4103961580,BR,CC,27000,R_11,0,R_11,2527,R_11,52,R_11,2012,00,00,00,-76.567069,39.286587,24,510,04000,620216,11,2609,1010,2403,0,1,12580,0
TX,TX0012,002,109,DENTON PUBLIC LIBRARY,502 OAKLAND ST,DENTON,76201,3102,DENTON,9403498750,CE,NC,22876,R_11,0,R_11,3161,R_11,52,R_11,2012,00,00,00,-97.129918,33.219673,48,121,19972,685601,12,206.0099945,3025,4826,0,1,19100,0
MT,MT0044,002,747,LAUREL PUBLIC LIBRARY,720 WEST 3RD ST,LAUREL,59044,0068,YELLOWSTONE,4066284961,CE,NO,6000,R_11,0,R_11,2338,R_11,51,R_11,2012,00,00,00,-108.780888,45.671408,30,111,42700,149907,31,19.01000023,2007,3000,0,1,13740,0
NJ,NJ0194,008,1225F,ISELIN BRANCH,1081 GREEN ST.,ISELIN,08830,2171,MIDDLESEX,7327267073,BR,NC,9000,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.313243,40.571154,34,023,34470,816618,21,26.03000069,2000,3406,0,1,35620,0
FL,FL0005,003,FL0005-003,ALAFAYA BRANCH,12000 EAST COLONIAL DRIVE,ORLANDO,32826,4705,ORANGE,4078357323,BR,CC,12000,R_11,0,R_11,3150,R_11,52,R_11,2012,00,00,00,-81.203356,28.566308,12,095,00410,1171018,21,167.2700043,1000,1209,0,1,36740,0
LA,LA0002,003,10,MONTGOMERY BRANCH,940 CADDO STREET,MONTGOMERY,71454,0157,GRANT,3186463660,BR,NO,770,R_11,0,R_11,1456,R_11,52,R_11,2012,00,00,00,-92.889812,31.667523,22,043,51620,22115,42,202,1127,2205,0,1,10780,0
IA,IA0400,002,VT,CRESCO PUBLIC LIBRARY,320 N ELM ST,CRESCO,52136,1452,HOWARD,5635472540,CE,NO,7800,R_11,0,R_11,3120,R_11,52,R_11,2012,00,00,15,-92.11626,43.374078,19,089,17220,9533,33,9601,4021,1901,0,1,0,.
IL,IL0031,002,3003100,BARCLAY PUBLIC LIBRARY DISTRICT,220 SOUTH MAIN STREET,WARRENSBURG,62573,0349,MACON,2176723621,CE,NO,5000,R_11,0,R_11,2600,R_11,-1,U_11,2012,00,00,00,-89.062322,39.929914,17,115,78916,110616,41,28,1137,1713,0,1,19500,0
CT,CT0022,002,2100,DAVID M. HUNT LIBRARY,63 MAIN ST.,CANAAN,06031,0217,LITCHFIELD,8608247424,CE,NO,3600,R_11,0,R_11,1456,R_11,52,R_11,2012,00,00,00,-73.328793,42.026425,09,005,10870,188923,42,2602,1020,0905,0,1,45860,1
CA,CA0119,002,M715,CROWELL PUBLIC LIBRARY,1890 HUNTINGTON DR.,SAN MARINO,91108,2595,LOS ANGELES,6263000777,CE,NC,29000,R_11,0,R_11,3224,R_11,52,R_11,2012,00,00,00,-118.112501,34.119348,06,037,68224,9889025,21,4641,4005,0627,0,1,31080,0
MN,MN0043,009,M0715,NEW BRIGHTON LIBRARY,400 10TH STREET NW,NEW BRIGHTON,55112,6806,RAMSEY,6517246002,BR,NC,6250,R_11,0,R_11,294,R_11,9,R_11,2012,02,00,00,-93.191665,45.065114,27,123,45430,515336,21,412,1003,2704,0,1,33460,0
GA,GA0008,018,GA0008,TYBEE,403 BUTLER AVENUE,TYBEE ISLAND,31328,9719,CHATHAM,9127867733,BR,NC,4000,R_11,0,R_11,1528,R_11,52,R_11,2012,00,00,00,-80.842618,32.008883,13,051,78036,271896,31,111.0299988,2022,1301,0,1,42340,0
NH,NH0042,002,NH89137,WADLEIGH MEMORIAL LIBRARY,49 NASHUA STREET,MILFORD,03055,3753,HILLSBOROUGH,6036732408,CE,NO,13500,R_11,0,R_11,2923,R_11,52,R_11,2012,00,00,00,-71.648234,42.835511,33,011,47940,401842,22,162.0099945,5021,3302,0,1,31700,0
NY,NY0069,002,7800020610,FREE LIBRARY OF THE BELMONT LITERARY AND HIST,2 WILLETS AVENUE,BELMONT,14813,1025,ALLEGANY,5852685308,CE,NO,8000,R_11,0,R_11,1000,R_11,50,R_11,2012,00,00,00,-78.034633,42.223293,36,003,05815,48744,42,9506,3060,3623,0,1,0,.
IL,IL0243,002,3034900,HIGHWOOD PUBLIC LIBRARY,102 HIGHWOOD AVENUE,HIGHWOOD,60040,1520,LAKE,8474325404,CE,NC,10363,R_11,0,R_11,2128,R_11,-1,U_11,2012,00,00,00,-87.810707,42.201979,17,097,34865,701575,21,8652,1007,1710,0,1,16980,0
VA,VA0005,008,VA0005-008,WESTOVER BRANCH LIBRARY,1644 N.MCKINLEY STREET,ARLINGTON,22205,2855,ARLINGTON,7032285260,BR,NC,16403,R_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-77.140244,38.888422,51,013,03000,216118,12,1010,4003,5108,4,15,47900,0
AZ,AZ0111,002,CE-COPPER,COPPER QUEEN LIBRARY,6 MAIN STREET,BISBEE,85603,9901,COCHISE,5204324232,CE,NO,9000,R_11,0,R_11,2236,R_11,52,R_11,2012,00,00,00,-109.915161,31.441616,04,003,06260,132770,33,10,2015,0402,0,1,43420,0
SD,SD0042,002,SD0042-002,DOROTHEE PIKE MEMORIAL LIBRARY,225 N MAIN AVE,LAKE PRESTON,57249,0036,KINGSBURY,6058474843,CE,NO,392,R_11,0,R_11,988,R_11,52,R_11,2012,00,00,15,-97.377319,44.362653,46,077,35500,5152,43,9581,1191,4600,0,1,0,.
WI,WI0322,002,WI0322,TOMAHAWK PUBLIC LIBRARY,300 W. LINCOLN AVE.,TOMAHAWK,54487,1202,LINCOLN,7154532455,CE,NO,11465,R_11,0,R_11,2596,R_11,52,R_11,2012,00,00,00,-89.733724,45.473925,55,069,80125,28492,32,9602,2040,5507,0,1,32980,1
NY,NY0146,002,2400113890,PECK MEMORIAL LIBRARY,24 MAIN STREET,MARATHON,13803,0325,CORTLAND,6078496135,CE,NO,3052,R_11,0,R_11,1490,R_11,52,R_11,2012,00,00,00,-76.033345,42.441233,36,023,45392,49619,42,9711,3064,3622,0,1,18660,1
DC,DC0001,017,SOW,SOUTHWEST BRANCH LIBRARY,"900 WESLEY PLACE, SW",WASHINGTON,20024,4212,DIST OF COLUMBIA,2027244752,BR,CC,22032,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-77.016219,38.879185,11,001,50000,619020,11,102,2044,1198,0,1,47900,0
OR,OR0140,001,OR0140,LANE LIBRARY DISTRICT,64 W. OREGON AVE.,CRESWELL,97426,0366,LANE,5038953053,CE,NC,4950,R_11,0,R_11,2300,R_11,52,R_11,2012,00,00,00,-123.019529,43.917861,41,039,16950,353481,31,11.01000023,3086,4104,0,1,21660,0
IL,IL0445,004,3056601,YORK STREET BRANCH LIBRARY,639 YORK STREET,QUINCY,62301,3918,ADAMS,2172231309,BR,NO,2775,R_11,0,R_11,2020,R_11,52,R_11,2012,00,00,00,-91.40595,39.929353,17,001,62367,67169,33,7,2054,1718,0,1,39500,1
OH,OH0226,003,326B01,BROOKFIELD BRANCH LIBRARY,7032 GROVE ST,BROOKFIELD,44403,0052,TRUMBULL,3304488134,BR,NC,4200,R_11,0,R_11,2652,R_11,52,R_11,2012,00,00,00,-80.565232,41.232504,39,155,09200,208874,21,9314,4006,3913,0,1,49660,0
WI,WI0052,002,WI0052,CAMPBELLSPORT PUBLIC LIBRARY,220 N. HELENA,CAMPBELLSPORT,53010,0405,FOND DU LAC,9205338534,CE,NC,10440,R_11,0,R_11,2020,R_11,52,R_11,2012,00,00,00,-88.276351,43.599297,55,039,12325,101856,42,422,3028,5506,0,1,22540,0
AR,AR0001,017,AR0001-13,OLEY E. ROOKER LIBRARY,11 OTTER CREEK CT.,LITTLE ROCK,72210,M,PULASKI,5019075991,BR,NC,13550,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-92.427498,34.659253,05,119,41000,386822,41,42.20000076,3009,0502,0,1,30780,0
GA,GA0022,042,GA0022,NORTHEAST-SPRUILL OAKS REGIONAL LIBRARY,9560 SPRUILL ROAD,ALPHARETTA,30022,5550,FULTON,7703608820,BR,NC,25000,R_11,0,R_11,2882,R_11,52,R_11,2012,00,00,00,-84.22258,34.01515,13,121,42425,949580,21,114.25,2005,1306,0,1,12060,0
ME,ME0247,002,93,NORTH GORHAM PUBLIC LIBRARY,2 STANDISH NECK ROAD,GORHAM,04038,2469,CUMBERLAND,2078922575,CE,NO,1200,R_11,0,R_11,750,R_11,52,R_11,2012,00,00,00,-70.45554,43.798963,23,005,00000,282669,32,41,2006,2301,0,1,38860,0
ME,ME0079,002,83,FORT KENT PUBLIC LIBRARY,1 MONUMENT SQUARE,FORT KENT,04743,1216,AROOSTOOK,2078343048,CE,NO,3153,R_11,0,R_11,1579,R_11,52,R_11,2012,00,00,00,-68.595746,47.250002,23,003,25720,71388,43,9506,3020,2302,4,14,0,.
MI,MI0336,002,MI0336-002,THOMAS TOWNSHIP LIBRARY,8207 SHIELDS DRIVE,SAGINAW,48609,4814,SAGINAW,9897813770,CE,CC,14360,R_11,0,R_11,2732,R_11,52,R_11,2012,00,00,00,-84.074739,43.41882,26,145,73560,198990,22,120.0299988,1011,2604,0,1,40980,0
TN,TN0133,006,KN001-05,FARRAGUT BRANCH LIBRARY,417 N. CAMPBELL STATION ROAD,KNOXVILLE,37934,2708,KNOX,8657771750,BR,CC,10100,R_11,0,R_11,2860,R_11,52,R_11,2012,00,00,00,-84.168446,35.88913,47,093,25760,436877,21,58.09000015,2020,4702,0,1,28940,0
TX,TX0160,002,245,RED WALLER COMMUNITY LIBRARY,109 MELTON ST,MALAKOFF,75148,9347,HENDERSON,9034891818,CE,NO,4800,R_11,0,R_11,1500,R_11,50,R_11,2012,00,00,00,-96.014132,32.170392,48,213,46224,78753,33,9510,2059,4805,0,1,11980,1
LA,LA0058,008,LA0058,MILTON H. LATTER MEMORIAL BRANCH,5120 ST. CHARLES AVENUE,NEW ORLEANS,70115,4941,ORLEANS,5045962625,BR,CC,9000,R_11,0,R_11,2704,R_11,52,R_11,2012,00,00,00,-90.109987,29.926997,22,071,55000,360341,11,108,1015,2202,0,1,35380,0
WV,WV0020,005,019C,BOOKMOBILE,3100 EMERSON AVE.,PARKERSBURG,26104,2414,WOOD,3044204587,BS,NC,-3,U_11,1,R_11,1040,R_11,52,R_11,2012,00,00,00,-81.53833,39.28578,54,107,62140,86837,13,3,2003,5401,0,1,37620,0
CA,CA0019,004,M615,CARNEGIE TECHNOLOGY CENTER BRANCH,420 HEBER AVE.,CALEXICO,92231,2559,IMPERIAL,7603575525,BR,NC,4000,R_11,0,R_11,708,R_11,52,R_11,2012,00,00,00,-115.493508,32.669062,06,025,09710,175897,31,121,3011,0651,0,1,20940,0
PA,PA0385,026,926510006,LAWNCREST BRANCH LIBRARY,6098 RISING SUN AVENUE,PHILADELPHIA,19111,6009,PHILADELPHIA,2156850549,BR,CC,7184,R_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-75.099695,40.045973,42,101,60000,1538567,11,305.019989,1004,4213,0,1,37980,0
NY,NY0306,002,3600414840,C. W. CLARK MEMORIAL LIBRARY,160 NORTH MAIN STREET,ORISKANY FALLS,13425,0670,ONEIDA,3158217850,CE,NC,3141,R_11,0,R_11,2060,R_11,52,R_11,2012,00,00,00,-75.459544,42.940144,36,065,55376,234155,42,256,2068,3622,0,1,46540,0
NC,NC0061,005,C-UNION-W,WAXHAW LIBRARY,509 S PROVIDENCE ST,WAXHAW,28173,9339,UNION,7048433131,BR,NC,2900,R_11,0,R_11,1489,R_11,52,R_11,2012,00,00,15,-80.741342,34.922191,37,179,71460,205193,41,210.1399994,1009,3709,0,1,16740,0
IL,IL0194,002,3029200,FRANKLIN PARK PUBLIC LIBRARY DISTRICT,10311 GRAND AVENUE,FRANKLIN PARK,60131,2225,COOK,8474556016,CE,NC,25000,R_11,0,R_11,3424,R_11,-1,U_11,2012,00,00,00,-87.882502,41.930234,17,031,27702,5214098,21,8114.02002,2009,1705,0,1,16980,0
OH,OH0116,004,216B02,BALTIMORE BRANCH LIBRARY,205 E. MARKET ST.,BALTIMORE,43105,1326,FAIRFIELD,7408628505,BR,NC,3866,R_11,0,R_11,1632,R_11,51,R_11,2012,00,00,00,-82.600057,39.84531,39,045,03758,147355,31,303,3030,3915,0,1,18140,0
MI,MI0360,002,MI0360-002,WATERVLIET DISTRICT LIBRARY,333 NORTH MAIN STREET,WATERVLIET,49098,9750,BERRIEN,2694636382,CE,NC,10272,R_11,0,R_11,2340,R_11,52,R_11,2012,00,00,00,-86.259586,42.19054,26,021,84500,156489,31,103,4027,2606,0,1,35660,0
AL,AL0108,019,AL0108-019,BIRMINGHAM PUBLIC - TITUSVILLE BRANCH,26TH AVENUE SW,BIRMINGHAM,35211,2909,JEFFERSON,2053221140,BR,CC,9000,R_11,0,R_11,2385,R_11,52,R_11,2012,00,00,00,-86.833206,33.491538,01,073,07000,658967,12,51.00999832,3026,0107,4,15,13820,0
TX,TX0443,005,86.66,SOUTH REGIONAL LIBRARY,2101 LAKE ROBBINS DR,THE WOODLANDS,77380,M,MONTGOMERY,9364427727,BR,NC,30000,R_11,0,R_11,3141,R_11,52,R_11,2012,00,00,00,-95.465652,30.162471,48,339,72656,471704,23,6917,1033,4808,0,1,26420,0
FL,FL0012,042,FL0012-042,TAMARAC BRANCH,8701 W. COMMERCIAL BLVD.,TAMARAC,33351,4310,BROWARD,9547202282,BR,NC,30000,R_11,0,R_11,2672,R_11,52,R_11,2012,00,00,00,-80.267013,26.193663,12,011,39550,1784956,21,601.1400146,1004,1220,0,1,33100,0
PA,PA0007,002,901300753,EVA K BOWLBY PUBLIC LIBRARY,311 NORTH WEST ST,WAYNESBURG,15370,1238,GREENE,7246279776,CE,NO,9791,R_11,0,R_11,2401,R_11,52,R_11,2012,00,00,00,-80.191465,39.899297,42,059,81832,38424,32,9706,3034,4218,0,1,0,.
IN,IN0068,012,2713,CENTRE TOWNSHIP BRANCH,1150 EAST KERN ROAD,SOUTH BEND,46614,6472,ST JOSEPH,5742513700,BR,CC,17160,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-86.232966,41.607649,18,141,71000,266661,12,119,2011,1802,0,1,43780,0
MI,MI0284,002,MI0284-002,REED CITY PUBLIC LIBRARY,410 WEST UPTON AVENUE,REED CITY,49677,1152,OSCEOLA,2318322131,CE,NO,3649,R_11,0,R_11,1872,R_11,52,R_11,2012,00,00,00,-85.516822,43.875995,26,133,67820,23455,33,9706,2012,2604,0,1,0,.
VT,VT0042,002,CORNWALL,CORNWALL FREE PUBLIC,2629 RT 30,CORNWALL,05753,9299,ADDISON,8024623615,CE,NO,315,R_11,0,R_11,1664,R_11,52,R_11,2012,00,00,00,-73.209627,43.961155,50,001,00000,36785,41,9609,1014,5000,0,1,0,.
TX,TX0065,002,157,LEE PUBLIC LIBRARY,312 W PACIFIC AVE,GLADEWATER,75647,2135,GREGG,9038452640,CE,NC,5500,R_11,0,R_11,2048,R_11,52,R_11,2012,00,00,00,-94.946153,32.535873,48,183,29660,122325,31,102,3008,4801,0,1,30980,0
CT,CT0105,002,9500,PUBLIC LIBRARY OF NEW LONDON,63 HUNTINGTON ST.,NEW LONDON,06320,6194,NEW LONDON,8604471411,CE,CC,22000,R_11,0,R_11,2678,R_11,52,R_11,2012,00,00,00,-72.099541,41.354992,09,011,52280,274091,13,6905,2026,0902,0,1,35980,0
NJ,NJ0195,009,1300G,MARLBORO LIBRARY,1 LIBRARY COURT,MARLBORO,07746,1102,MONMOUTH,7325369406,BR,NC,18100,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.262612,40.330578,34,025,63900,630092,21,8097.009766,2021,3406,0,1,35620,0
IL,IL0037,002,3003700,BEDFORD PARK PUBLIC LIBRARY DISTRICT,7816 WEST 65TH PLACE,BEDFORD PARK,60501,1914,COOK,7084586826,CE,NC,17000,R_11,0,R_11,3016,R_11,-1,U_11,2012,00,00,00,-87.816069,41.772696,17,031,04572,5214098,21,8205.009766,1026,1703,0,1,16980,0
KS,KS0191,002,KS0059,CONWAY SPRINGS CITY LIBRARY,210 W. SPRINGS AVE,CONWAY SPRINGS,67031,0183,SUMNER,6204562859,CE,NO,980,R_11,0,R_11,1040,R_11,52,R_11,2012,00,00,00,-97.63682,37.390358,20,191,15325,23835,42,9622,3026,2004,0,1,48620,0
NH,NH0055,002,NH89149,NEWFIELDS PUBLIC LIBRARY,76 MAIN STREET,NEWFIELDS,03856,0200,ROCKINGHAM,6037788169,CE,NO,-1,U_11,0,R_11,1456,R_11,52,R_11,2012,00,00,00,-70.932892,43.041363,33,015,00000,296085,31,675.0100098,2014,3301,0,1,14460,0
WI,WI0308,002,WI0308,JEAN M. THOMSEN MEMORIAL LIBRARY,105 N. GERSHWIN ST.,STETSONVILLE,54480,0099,TAYLOR,7156782892,CE,NO,3990,R_11,0,R_11,1772,R_11,52,R_11,2012,00,00,00,-90.311907,45.077181,55,119,77100,20759,42,9606,3046,5507,0,1,0,.
FL,FL0011,019,FL0011-019,SUNTREE/VIERA PUBLIC LIBRARY,902 JORDAN BLASS DRIVE,MELBOURNE,32940,3350,BREVARD,3212554404,BR,NO,15000,R_11,0,R_11,2716,R_11,-1,U_11,2012,00,00,00,-80.679796,28.215339,12,009,00000,544322,21,641.2700195,4005,1208,0,1,37340,0
NY,NY0071,002,7800021050,ESSENTIAL CLUB FREE LIBRARY,11 PRATT STREET,CANASERAGA,14822,9728,ALLEGANY,6075456443,CE,NO,2500,R_11,0,R_11,1144,R_11,52,R_11,2012,00,00,00,-77.775745,42.461616,36,003,12177,48744,42,9501,1037,3623,0,1,0,.
WI,WI0134,002,WI0134,HILLSBORO PUBLIC LIBRARY,819 HIGH AVE.,HILLSBORO,54634,0468,VERNON,6084892192,CE,NO,6800,R_11,0,R_11,1716,R_11,52,R_11,2012,00,00,00,-90.341447,43.652202,55,123,34825,30043,43,9601,2032,5503,0,1,0,.
FL,FL0021,002,FL0021-002,COLUMBIA COUNTY PUBLIC LIBRARY,308 N.W. COLUMBIA AVE.,LAKE CITY,32055,2891,COLUMBIA,3867581018,CE,NO,15400,R_11,0,R_11,2942,R_11,52,R_11,2012,00,00,00,-82.63798,30.192204,12,023,37775,67383,33,1105,2048,1203,0,1,29380,1
FL,FL0001,005,FL0001-005,BELLEVIEW PUBLIC LIBRARY,13145 SE HWY 484,BELLEVIEW,34420,5831,MARION,3524382500,BR,NC,16000,R_11,0,R_11,2614,R_11,52,R_11,2012,00,00,00,-82.065647,29.028237,12,083,00000,332472,23,11.02000046,2051,1211,0,1,36100,0
TN,TN0135,015,NA001-14,MADISON BRANCH LIBRARY,610 GALLATIN PIKE SOUTH,MADISON,37115,2192,DAVIDSON,6158625868,BR,CC,20680,R_11,0,R_11,2600,R_11,52,R_11,2012,00,00,00,-86.71406,36.257013,47,037,52006,635592,11,107.0100021,4001,4705,0,1,34980,0
NH,NH0220,002,NH8995,WOODSVILLE FREE PUBLIC LIBRARY,14 SCHOOL LANE,WOODSVILLE,03785,1227,GRAFTON,6037473483,CE,NO,1360,IP10,0,R_11,1092,R_11,52,R_11,2012,00,00,00,-72.036754,44.150391,33,009,87140,88954,43,9606,3035,3302,0,1,17200,1
NY,NY0651,002,8000580910,BROOKHAVEN FREE,273 BEAVER DAM RD,BROOKHAVEN,11719,9607,SUFFOLK,6312861923,CE,NC,5047,R_11,0,R_11,3140,R_11,52,R_11,2012,00,00,00,-72.911466,40.773631,36,103,09000,1500338,21,1592.040039,3015,3601,0,1,35620,0
IL,IL0480,002,3060300,SCHILLER PARK PUBLIC LIBRARY,4200 OLD RIVER ROAD,SCHILLER PARK,60176,1630,COOK,8476780433,CE,NC,12500,R_11,0,R_11,3328,R_11,-1,U_11,2012,00,00,00,-87.860692,41.955696,17,031,68081,5214098,21,7708,1039,1705,0,1,16980,0
NY,NY0004,019,0400300000,CROWN HEIGHTS,560 NEW YORK AVENUE,BROOKLYN,11225,5296,KINGS,7187731180,BR,CC,9280,R_11,0,R_11,2392,R_11,52,R_11,2012,00,00,00,-73.947776,40.661073,36,047,51000,2540230,11,804,1001,3609,0,1,35620,0
OH,OH0039,011,139BK,STARK COUNTY DISTRICT LIBRARY,715 MARKET AVE.,CANTON,44702,1080,STARK,3304520665,BS,CC,-3,U_11,5,R_11,5976,R_11,52,R_11,2012,00,00,00,-81.373216,40.803018,39,151,12000,374328,13,7001,1048,3907,4,16,15940,0
GA,GA0036,008,GA0036,MARION COUNTY PUBLIC LIBRARY,123 EAST 5TH AVE.,BUENNA VISTA,31803,0391,MARION,2296496385,BR,NO,4311,R_11,0,R_11,1588,R_11,52,R_11,2012,00,00,00,-84.522819,32.318596,13,197,11728,8706,42,9202,3058,1302,0,1,17980,0
NJ,NJ0195,006,1300D,HAZLET MEMORIAL LIBRAY,251 MIDDLE ROAD,HAZLET,07730,1904,MONMOUTH,7322647164,BR,NC,10200,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.176972,40.427274,34,025,00000,630092,21,8021,5017,3406,0,1,35620,0
SC,SC8004,006,SC8004-002,NINETY-SIX BRANCH LIBRARY,100 SOUTH CAMBRIDGE STREET,NINETY-SIX,29666,1111,GREENWOOD,8645434749,BR,NO,3750,R_11,0,R_11,2314,R_11,52,R_11,2012,00,00,00,-82.023766,34.175093,45,047,50290,69739,42,9707.019531,4019,4503,0,1,24940,1
WI,WI0382,002,WI0382,DRESSER PUBLIC LIBRARY,117 S. CENTRAL AVE.,DRESSER,54009,0547,POLK,7157552944,CE,NO,1274,R_11,0,R_11,1250,R_11,50,R_11,2012,00,00,00,-92.633499,45.355307,55,095,20850,43984,42,9607,3074,5507,0,1,0,.
OK,OK0061,002,65,MAYSVILLE PUBLIC LIBRARY,508 WILLIAMS,MAYSVILLE,73057,0878,GARVIN,4058674748,CE,NO,3125,R_11,0,R_11,2184,R_11,52,R_11,2012,00,00,00,-97.40843,34.817807,40,049,47150,27387,42,6816,1114,4004,0,1,0,.
CA,CA0027,006,M623,ATLANTIC BRANCH,2269 S. ATLANTIC BLVD,COMMERCE,90040,3955,LOS ANGELES,3237801176,BR,NC,3852,R_11,0,R_11,2080,R_11,52,R_11,2012,00,00,00,-118.164562,34.005171,06,037,14974,9889025,21,5323.02002,4024,0640,0,1,31080,0
NJ,NJ0114,005,0705C,FRANKLIN BRANCH,192 DODD STREET,EAST ORANGE,07017,2107,ESSEX,9732667053,BR,NC,500,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.21016,40.781824,34,013,19390,786754,21,100,1001,3410,0,1,35620,0
OH,OH0177,002,277C,MORLEY LIBRARY,184 PHELPS ST.,PAINESVILLE,44077,3926,LAKE,4403523383,CE,NC,17500,R_11,0,R_11,3951,R_11,52,R_11,2012,00,00,00,-81.243767,41.727571,39,085,59416,229873,21,2045,1008,3914,0,1,17460,0
NY,NY0420,002,5600221120,CARTHAGE FREE LIBRARY,412 BUDD STREET,CARTHAGE,13619,1206,JEFFERSON,3154932620,CE,NO,4800,R_11,0,R_11,2392,R_11,52,R_11,2012,00,00,00,-75.609727,43.979609,36,045,12683,118163,33,609,3023,3621,0,1,48060,0
KY,KY0073,003,MARTIN,RUFUS M. REED PUBLIC LIBRARY,1442 RIVERFRONT ROAD,LOVELY,41231,0359,MARTIN,6063956500,BR,NO,3400,R_11,0,R_11,2080,R_11,52,R_11,2012,00,00,00,-82.367849,37.78319,21,159,00000,12839,42,9503,1003,2105,X,14,0,.
MT,MT0051,005,1216,FRENCHTOWN SCHOOL AND COMMUNITY LIBRARY (MISSOULA CO.),16495 MAIN STREET,FRENCHTOWN,59834,M,MISSOULA,4066262730,BR,NO,4500,R_11,0,R_11,1040,R_11,52,R_11,2012,00,14,00,-114.227048,47.011982,30,063,29350,110114,42,16,1029,3000,0,1,33540,0
PA,PA0147,002,908561265,MARY S BIESECKER PUB LIBRARY,230 S ROSINA AVE,SOMERSET,15501,1937,SOMERSET,8144454011,CE,NC,3531,R_11,0,R_11,2345,R_11,52,R_11,2012,00,00,00,-79.082912,40.00724,42,111,71776,77382,32,210,3002,4212,0,1,43740,1
IA,IA0251,002,MM,ALGONA PUBLIC LIBRARY,210 N PHILLIPS,ALGONA,50511,1735,KOSSUTH,5152955476,CE,NO,16000,R_11,0,R_11,2912,R_11,52,R_11,2012,00,00,15,-94.226822,43.070044,19,109,01135,15369,33,9505,2042,1904,0,1,0,.
NY,NY0004,061,0400300000,WINDSOR TERRACE,160 EAST 5TH STREET,BROOKLYN,11218,1702,KINGS,7186869707,BR,CC,7500,R_11,0,R_11,2392,R_11,52,R_11,2012,00,00,00,-73.97657,40.648829,36,047,51000,2540230,11,500,2004,3609,0,1,35620,0
IN,IN0177,002,7284,BLOOMFIELD-EASTERN GREENE COUNTY PUBLIC LIBRARY,125 SOUTH FRANKLIN STREET,BLOOMFIELD,47424,1406,GREENE,8123844125,CE,NO,13400,R_11,0,R_11,2808,R_11,52,R_11,2012,00,00,00,-86.93852,39.02559,18,055,05716,33061,32,9554,4026,1808,0,1,0,.
NJ,NJ0223,002,NJ0223-002,BUTLER PUBLIC LIBRARY,1 ACE ROAD,BUTLER,07045,1375,MORRIS,2018383262,CE,NC,6324,R_11,0,R_11,2659,R_11,52,R_11,2012,00,00,00,-74.342983,41.003358,34,027,09040,495941,21,405,1007,3411,0,1,35620,0
TX,TX0247,011,329.299,CINCO RANCH BRANCH LIBRARY,2620 COMMERCIAL CENTER BLVD,KATY,77494,6407,FORT BEND,2813951311,BR,NC,33500,R_11,0,R_11,2524,R_11,52,R_11,2012,00,00,00,-95.787502,29.725205,48,157,00000,607952,41,6731.02002,1089,4822,2,15,26420,0
MN,MN0035,015,M0213,ANOKA: RUM RIVER,4201 6TH AVE NW,ANOKA,55303,M,ANOKA,7635764695,BR,NC,30150,R_11,0,R_11,2312,R_11,52,R_11,2012,00,00,15,-93.380862,45.22981,27,003,01720,333226,21,505.0499878,3007,2706,0,1,33460,0
OH,OH0002,019,102B17,HIGHLAND SQUARE BRANCH LIBRARY,807 W MARKET ST,AKRON,44303,1010,SUMMIT,3303762927,BR,CC,11500,R_11,0,R_11,2964,R_11,52,R_11,2012,00,06,15,-81.543313,41.096492,39,153,01000,541227,12,5073,3001,3913,0,1,10420,0
MA,MA0015,002,ATHOL,ATHOL PUBLIC LIBRARY,568 MAIN STEET,ATHOL,01331,1888,WORCESTER,9782499515,CE,NO,8000,R_11,0,R_11,2350,R_11,52,R_11,2012,00,00,15,-72.228447,42.593893,25,027,02515,803785,32,7031,1026,2502,4,14,49340,0
CA,CA0105,022,M701,SOUTHGATE LIBRARY,6132 66TH AVE.,SACRAMENTO,95823,2706,SACRAMENTO,9162642700,BR,CC,12000,R_11,0,R_11,1980,R_11,49,R_11,2012,00,00,00,-121.433101,38.492443,06,067,24498,1436262,21,50.02000046,1004,0607,0,1,40900,0
CT,CT0124,002,11000,PLAINVILLE PUBLIC LIBRARY,56 EAST MAIN ST.,PLAINVILLE,06062,1934,HARTFORD,8607931446,CE,NC,30000,R_11,0,R_11,3016,R_11,52,R_11,2012,00,00,00,-72.865298,41.671845,09,003,00000,896248,21,4205,4005,0905,0,1,25540,0
TX,TX0069,002,160,LIBRARY OF GRAHAM,910 CHERRY ST,GRAHAM,76450,3547,YOUNG,9405490600,CE,NO,14000,R_11,0,R_11,2184,R_11,52,R_11,2012,00,00,00,-98.587919,33.099243,48,503,30392,18385,33,9505,2005,4819,0,1,0,.
MI,MI0322,002,MI0322-002,SAINT CLAIR SHORES PUBLIC LIBRARY,22500 ELEVEN MILE ROAD,SAINT CLAIR SHORES,48081,1399,MACOMB,5867719020,CE,NC,30000,R_11,0,R_11,3092,R_11,52,R_11,2012,00,00,00,-82.887251,42.496575,26,099,70760,842881,21,2511,1001,2609,0,1,19820,0
TX,TX0183,002,269,WARD COUNTY LIBRARY,409 S DWIGHT ST,MONAHANS,79756,4609,WARD,4329433332,CE,NO,15000,R_11,0,R_11,2452,R_11,52,R_11,2012,00,00,00,-102.887829,31.59298,48,475,48936,10713,32,9502,1052,4823,0,5,0,.
AL,AL0248,001,506-003,SOUTHSIDE PUBLIC LIBRARY,2255 HIGHWAY 77,SOUTHSIDE,35907,7905,ETOWAH,2564420105,CE,NO,1000,R_11,0,R_11,1404,R_11,52,R_11,2012,00,00,00,-86.022239,33.918787,01,055,71832,104298,23,105.0100021,3044,0104,0,1,23460,0
ME,ME0296,002,268,SWANS ISLAND PUBLIC LIBRARY,451 ATLANTIC ROAD,SWAN'S ISLAND,04685,0012,HANCOCK,2075264330,CE,NO,3500,R_11,0,R_11,1200,R_11,52,R_11,2012,00,00,00,-68.417378,44.174678,23,009,00000,54551,43,9662,2136,2302,0,1,0,.
KS,KS0200,002,KS0020,BELLE PLAINE PUBLIC LIBRARY,222 W. 5TH,BELLE PLAINE,67013,0700,SUMNER,6204883431,CE,NO,1987,R_11,0,R_11,1508,R_11,52,R_11,2012,00,00,00,-97.281473,37.393656,20,191,05500,23835,42,9621,4011,2004,0,1,48620,0
CA,CA0144,006,M740,SUTTER BRANCH LIBRARY,2147 CALIFORNIA ST.,SUTTER,95982,2546,SUTTER,5307550485,BR,NC,970,R_11,0,R_11,996,R_11,52,R_11,2012,00,00,00,-121.748948,39.158979,06,101,77378,94951,23,508,2033,0603,0,1,49700,0
DC,DC0001,012,NOE,NORTHEAST BRANCH LIBRARY,"330 7TH STREET, NE",WASHINGTON,20002,6104,DIST OF COLUMBIA,2026983320,BR,CC,13900,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-76.996192,38.893985,11,001,50000,619020,11,83.01999664,1014,1198,0,1,47900,0
KY,KY0109,007,WARREN,GRAHAM DRIVE COMMUNITY BRANCH,305 GRAHAM DRIVE,BOWLING GREEN,42101,1140,WARREN,2707811441,BR,CC,1627,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-86.441796,37.003255,21,227,08902,115491,13,102,3031,2102,0,1,14540,0
FL,FL0025,015,FL0025-015,KENDALL BRANCH LIBRARY,9101 S.W. 97 AVENUE,MIAMI,33176,1985,MIAMI-DADE,3052790520,BR,CC,14000,R_11,0,R_11,2559,R_11,52,R_11,2012,00,00,00,-80.350799,25.685623,12,086,36100,2565440,13,84.05000305,1009,1227,0,1,33100,0
PA,PA0532,002,902024075,SENIOR BUS,1301 BEAVER AVENUE,PITTSBURGH,15233,2342,ALLEGHENY,4123211853,BS,CC,-3,U_11,1,R_11,403,R_11,50,R_11,2012,00,00,00,-80.028932,40.453027,42,003,61000,1227442,11,9806,1011,4214,0,1,38300,0
NJ,NJ0204,002,NJ0204-002,FAIR HAVEN PUBLIC LIBRARY,748 RIVER ROAD,FAIR HAVEN,07704,3397,MONMOUTH,2017475031,CE,NC,1750,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.035853,40.364273,34,025,22440,630092,21,8037,5000,3404,0,1,35620,0
VI,VI0002,002,VI0002-002,ELAINE I. SPRAUVE PUBLIC LIBRARY,EST. ENIGHED,CRUZ BAY,00830,M,ST. JOHN,3407766359,BR,NO,1200,R_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-64.740289,18.338647,78,020,00000,-1,41,9501,3092,7898,X,14,0,.
NC,NC0104,001,C-CHATHAM-BS,CHATHAM COUNTY BOOKMOBILE,500 N 2ND AVE,SILER CITY,27344,3123,CHATHAM,9195427725,BS,NC,-3,U_11,1,R_11,1000,R_11,50,R_11,2012,00,14,15,-79.46469,35.727411,37,037,61860,65280,32,204.0200043,1049,3702,0,1,20500,0
TX,TX0402,003,49.362,SOUTHMOST BRANCH LIBRARY,4320 SOUTHMOST BLVD,BROWNSVILLE,78521,M,CAMERON,9565481055,BR,CC,20000,R_11,0,R_11,2602,R_11,52,R_11,2012,00,00,00,-97.449958,25.896555,48,061,10768,412577,12,133.0599976,1008,4834,0,1,15180,0
OH,OH0163,008,OH0163-008,BUCKEYE LAKE BRANCH,41 W FIRST ST,BUCKEYE LAKE,43008,1708,LICKING,7409280472,BR,NO,1200,R_11,0,R_11,2433,R_11,52,R_11,2012,00,00,00,-82.482686,39.933065,39,089,09890,167194,23,7583,3012,3912,0,1,18140,0
GA,GA0023,006,6632HILTON,IDA HILTON PUBLIC LIBRARY,1105 NORTHWAY,DARIEN,31305,1227,MCINTOSH,9124272124,BR,NO,6000,R_11,0,R_11,2110,R_11,-1,U_11,2012,00,00,00,-81.417136,31.394249,13,191,00000,14229,31,1102,1079,1301,X,14,15260,0
LA,LA0057,015,60,ROSEDALE BRANCH,4036 JEFFERSON HIGHWAY,OLD JEFFERSON,70121,1630,JEFFERSON,5048384350,BR,NC,7138,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-90.168164,29.961761,22,051,38145,433523,21,245,1006,2201,0,1,35380,0
WI,WI0059,002,WI0059,CHIPPEWA FALLS PUBLIC LIBRARY,105 W. CENTRAL ST.,CHIPPEWA FALLS,54729,2397,CHIPPEWA,7157231146,CE,NC,18025,R_11,0,R_11,2682,R_11,52,R_11,2012,00,00,00,-91.393911,44.935456,55,017,14575,62857,23,103,1021,5503,0,1,20740,0
WI,WI0065,002,WI0065,COLFAX PUBLIC LIBRARY,613 MAIN ST.,COLFAX,54730,0525,DUNN,7159624334,CE,NO,1800,R_11,0,R_11,1820,R_11,52,R_11,2012,00,00,00,-91.727195,44.999765,55,033,16275,44021,42,9703,3057,5503,0,1,32860,1
DC,DC0001,016,SOE,SOUTHEAST BRANCH LIBRARY,"403 7TH STREET, SE",WASHINGTON,20003,2700,DIST OF COLUMBIA,2026983377,BR,CC,6431,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-76.996189,38.88387,11,001,50000,619020,11,65,2000,1198,0,1,47900,0
MI,MI0376,002,MI0376-002,GEORGE W. SPINDLER MEMORIAL LIBRARY,186 NORTH MAIN STREET,WOODLAND,48897,0068,BARRY,2693674694,CE,NO,1738,R_11,0,R_11,1040,R_11,52,R_11,2012,00,00,00,-85.13415,42.728953,26,015,88420,58936,42,101,2030,2603,0,1,24340,0
WV,WV0040,002,39,CLARKSBURG-HARRISON CO. PUBLIC LIBRARY,404 W. PIKE STREET,CLARKSBURG,26301,2712,HARRISON,3046272236,CE,NO,30442,R_11,0,R_11,3484,R_11,52,R_11,2012,00,00,00,-80.340592,39.280797,54,033,15628,69298,32,301,1055,5401,0,1,17220,1
IL,IL0524,002,3064900,THREE RIVERS PUBLIC LIBRARY DISTRICT,25207 WEST CHANNON DRIVE,CHANNAHON,60410,0300,WILL,8154676200,CE,NC,9200,R_11,0,R_11,3464,R_11,-1,U_11,2012,00,00,00,-88.224651,41.434087,17,197,12476,680584,21,8833.049805,1044,1716,0,1,16980,0
IA,IA0048,002,BW,BERTHA BARTLETT PUBLIC LIBRARY,503 BROAD ST,STORY CITY,50248,1133,STORY,5157332685,CE,NO,8000,R_11,0,R_11,2738,R_11,52,R_11,2012,00,00,15,-93.597291,42.187095,19,169,75675,90816,31,106,1023,1904,0,1,11180,0
MT,MT0011,003,1634,BUTTE-SILVER BOW PUBLIC LIBRARY SOUTH BRANCH,3100 HARRISON AVE,BUTTE,59701,M,SILVER BOW,4067233361,BR,NO,1200,R_11,0,R_11,1008,R_11,28,R_11,2012,02,00,00,-112.508,45.979868,30,093,11397,34362,33,7,1022,3000,0,1,15580,1
NM,NM0110,001,NM0110-001,PUEBLO DE ABIQUIU LIBRARY & CULTURAL CENTER,COUNTY RD. #187 BUILDING #29,ABIQUIU,87510,0838,RIO ARRIBA,5056854884,CE,NO,400,R_11,0,R_11,1329,R_11,52,R_11,2012,00,00,00,-106.231605,36.156557,35,039,00000,40353,42,4,2205,3503,X,14,21580,1
OR,OR0072,002,OR0072,SCAPPOOSE PUBLIC LIBRARY,52469 SE 2ND ST,SCAPPOOSE,97056,0400,COLUMBIA,5035437123,CE,NC,11020,R_11,0,R_11,2190,R_11,52,R_11,2012,00,00,00,-122.876339,45.756527,41,009,65500,49357,32,9709,2004,4101,0,1,38900,0
TN,TN0132,005,CH001-04,EASTGATE BRANCH LIBRARY,5705 MARLIN ROAD,CHATTANOOGA,37411,5508,HAMILTON,4237575310,BR,CC,9084,R_11,0,R_11,2340,R_11,52,R_11,2012,00,00,00,-85.211325,35.007946,47,065,14000,340870,12,30,2044,4703,0,1,16860,0
UT,UT0013,002,CACHCO1501,RICHMOND PUBLIC LIBRARY,38 WEST MAIN STREET,RICHMOND,84333,1409,CACHE,4352585525,CE,NO,2700,R_11,0,R_11,1565,R_11,52,R_11,2012,00,00,00,-111.809843,41.922642,49,005,63680,114559,41,1.00999999,3061,4901,0,1,30860,0
IN,IN0123,002,5092,LOGANSPORT-CASS COUNTY PUBLIC LIBRARY,616 EAST BROADWAY,LOGANSPORT,46947,3155,CASS,5747536383,CE,NO,40448,R_11,0,R_11,3900,R_11,52,R_11,2012,00,00,00,-86.362725,40.754552,18,017,44658,38810,32,9515,2020,1804,0,1,30900,1
WV,WV0082,002,81,GREENBRIER COUNTY PUBLIC LIBRARY,152 ROBERT W. MCCORMICK DRIVE,LEWISBURG,24901,1312,GREENBRIER,3046477568,CE,NO,13500,R_11,0,R_11,3068,R_11,52,R_11,2012,00,00,00,-80.448962,37.803713,54,025,46636,35710,33,9506,1041,5403,4,14,0,.
ME,ME0042,002,43,CARIBOU PUBLIC LIBRARY,30 HIGH STREET,CARIBOU,04736,2796,AROOSTOOK,2074934214,CE,NO,11000,R_11,0,R_11,2548,R_11,52,R_11,2012,00,00,00,-68.010616,46.860615,23,003,10565,71388,33,9513,3015,2302,0,1,0,.
MA,MA0091,002,ERVING,ERVING PUBLIC LIBRARY,17 MOORE ST.,ERVING,01344,9717,FRANKLIN,4134233348,CE,NO,1865,R_11,0,R_11,1044,R_11,52,R_11,2012,00,00,00,-72.490752,42.584079,25,011,41410,71646,32,404,2075,2502,0,1,24640,1
CA,CA0068,026,M664,GEORGE SOUTH MERCED BRANCH,401 LESHER DRIVE,MERCED,95340,6572,MERCED,2097253909,BR,CC,1200,R_11,0,R_11,1300,R_11,52,R_11,2012,00,00,00,-120.504007,37.293699,06,047,46898,259966,13,15.02999973,1021,0616,0,1,32900,0
MI,MI0240,012,MI0240-012,NORTH MUSKEGON BRANCH LIBRARY,1522 RUDDIMAN DRIVE,NORTH MUSKEGON,49445,3038,MUSKEGON,2317446080,BR,NC,3700,R_11,0,R_11,2496,R_11,52,R_11,2012,00,00,00,-86.267321,43.256368,26,121,58640,170021,22,15,2009,2602,0,1,34740,0
VA,VA0076,002,VA0076-002,SHENANDOAH COUNTY LIBRARY,514 STONEY CREEK BLVD.,EDINBURG,22824,9142,SHENANDOAH,5409848200,CE,NO,13000,R_11,0,R_11,-1,U_11,-1,U_11,2012,00,00,00,-78.569018,38.825883,51,171,25008,42270,42,406,2037,5106,0,1,0,.
NJ,NJ0188,002,NJ0188-002,SAYREVILLE FREE PUBLIC LIBRARY,1050 WASHINGTON ROAD,PARLIN,08859,1061,MIDDLESEX,2017270212,CE,NC,19500,R_11,0,R_11,3172,R_11,52,R_11,2012,00,00,00,-74.315701,40.464356,34,023,65790,816618,21,73.01000214,2000,3406,0,1,35620,0
NY,NY0251,002,3200482455,ALICE CURTIS DESMOND AND HAMILTON FISH LIBRARY,472 ROUTE 403,GARRISON,10524,9803,PUTNAM,8454243020,CE,NC,9467,R_11,0,R_11,2258,R_11,52,R_11,2012,00,00,00,-73.94238,41.375377,36,079,00000,99916,41,108,2025,3618,0,1,35620,0
GA,GA0004,015,GA0004,GORDON PUBLIC LIBRARY,284 MILLEDGEVILLE ROAD,GORDON,31031,0336,WILKINSON,4786285352,BR,NO,3385,R_11,0,R_11,2524,R_11,52,R_11,2012,00,00,00,-83.32934,32.882452,13,319,33980,9453,42,9603,3018,1308,0,1,0,.
NJ,NJ0284,006,1900D,SUSSEX-WANTAGE BRANCH,69 ROUTE 639,SUSSEX,07461,2301,SUSSEX,9738753940,BR,NC,1400,R_11,0,R_11,-1,U_11,52,R_11,2012,00,00,00,-74.608678,41.210574,34,037,71670,148517,32,3712,1004,3405,4,16,35620,0
NE,NE0038,002,040C,BRUNSWICK PUBLIC LIBRARY,303 FRANKLIN ST.,BRUNSWICK,68720,0011,ANTELOPE,4028422105,CE,NO,810,R_11,0,R_11,832,R_11,52,R_11,2012,00,00,00,-97.97071,42.292652,31,003,00000,6631,43,9796,2236,3103,0,1,0,.
KS,KS0155,002,KS0111,GOODLAND PUBLIC LIBRARY,812 BROADWAY,GOODLAND,67735,3037,SHERMAN,7858995461,CE,NO,13500,R_11,0,R_11,2810,R_11,52,R_11,2012,00,00,00,-101.710437,39.351002,20,181,26875,6039,33,4537,4002,2001,0,1,0,.
MI,MI0361,019,MI0361-002,WAYNE COUNTY PUBLIC LIBRARY,30555 MICHIGAN AVENUE,WESTLAND,48186,5310,WAYNE,7347277310,CE,NC,7000,R_11,0,R_11,2172,R_11,52,R_11,2012,00,00,00,-83.340555,42.286454,26,163,86000,1801789,21,5687,4017,2613,0,1,19820,0
TX,TX0583,002,577,DILLEY PUBLIC LIBRARY,231 W FM 117,DILLEY,78017,3503,FRIO,8309651951,CE,NO,2340,R_11,0,R_11,2000,R_11,50,R_11,2012,00,00,00,-99.170073,28.67396,48,163,20428,17367,33,9503,1253,4823,0,1,0,.
GA,GA0022,026,GA0022,PEACHTREE BRANCH LIBRARY,"1315 PEACHTREE STREET, N.E.",ATLANTA,30309,7515,FULTON,4048857830,BR,CC,10000,R_11,0,R_11,1806,R_11,52,R_11,2012,00,00,00,-84.38501,33.790479,13,121,04000,949580,11,4,1013,1305,0,1,12060,0
IN,IN0180,003,7531,ELLETTSVILLE BRANCH,600 WEST TEMPERANCE,ELLETTSVILLE,47429,1324,MONROE,8123492515,BR,NC,12000,R_11,0,R_11,3328,R_11,52,R_11,2012,00,00,00,-86.625077,39.234002,18,105,20800,140063,23,13.02999973,1050,1809,0,1,14020,0
WI,WI0023,002,WI0023,BELLEVILLE PUBLIC LIBRARY,130 S. VINE ST.,BELLEVILLE,53508,0140,DANE,6084241812,CE,NC,4600,R_11,0,R_11,2652,R_11,52,R_11,2012,00,00,00,-89.53399,42.858436,55,025,06300,496456,42,126,3121,5502,0,1,31540,0
CA,CA0146,004,M742,EL RETIRO BRANCH LIBRARY,126 VISTA DEL PARQUE,REDONDO BEACH,90277,6112,LOS ANGELES,3103750922,BR,NC,4158,R_11,0,R_11,2222,R_11,52,R_11,2012,00,00,00,-118.379754,33.815298,06,037,80000,9889025,12,6513.040039,2005,0633,0,1,31080,0
TX,TX0099,040,189.360,MCGOVERN-STELLA LINK BRANCH LIBRARY,7405 STELLA LINK RD,HOUSTON,77025,M,HARRIS,8323932630,BR,CC,20393,R_11,0,R_11,2098,R_11,50,R_11,2012,00,00,00,-95.440039,29.698416,48,201,35000,4173695,11,4130,2005,4807,0,1,26420,0
1 KS KS0189 002 KS0037 CALDWELL PUBLIC LIBRARY 120 S. MAIN ST. CALDWELL 67022 1414 SUMNER 6208456879 CE NO 4500 R_11 0 R_11 1200 R_11 50 R_11 2012 00 00 00 -97.606964 37.03116 20 191 09900 23835 43 9623 3078 2004 0 1 48620 0
2 CA CA0152 004 M748 SOLIZ LIBRARY 2820 JOURDAN ST. OXNARD 93036 1611 VENTURA 8054854515 BR CC 3030 R_11 0 R_11 1227 R_11 52 R_11 2012 00 00 00 -119.168424 34.2372 06 111 22370 831126 21 50.02999878 2005 0626 0 1 37100 0
3 WV WV0023 002 22 MORGANTOWN PUBLIC LIBRARY 373 SPRUCE STREET MORGANTOWN 26505 5564 MONONGALIA 3042917425 CE NO 24140 R_11 0 R_11 3016 R_11 52 R_11 2012 00 00 00 -79.954276 39.630204 54 061 55756 98613 13 107 1011 5401 0 1 34060 0
4 IL IL0603 002 3067300 VESPASIAN WARNER PUBLIC LIBRARY DISTRICT 310 NORTH QUINCY STREET CLINTON 61727 1300 DE WITT 2179355174 CE NO 36000 R_11 0 R_11 3172 R_11 -1 U_11 2012 00 00 00 -88.961745 40.154608 17 039 15001 16528 32 9717 2032 1713 0 1 14010 0
5 NC NC0032 017 C-FORSYTH-Y YWCA BEST CHOICE CENTER 1031 HIGHLAND AVE WINSTON-SALEM 27101 3108 FORSYTH 3367220597 BR CC 750 R_11 0 R_11 312 R_11 52 R_11 2012 00 00 00 -80.233147 36.108588 37 067 75000 354454 12 6 2018 3712 0 1 49180 0
6 NY NY0578 002 7200446540 TUXEDO PARK LIBRARY 227 ROUTE 17 TUXEDO PARK 10987 4405 ORANGE 8453512207 CE NC 9000 R_11 0 R_11 3094 R_11 52 R_11 2012 00 00 00 -74.18461 41.193192 36 071 00000 374438 41 149 3005 3618 0 5 35620 0
7 IL IL0508 002 3063300 STEELEVILLE AREA PUBLIC LIBRARY DISTRICT 625 SOUTH SPARTA STREET STEELEVILLE 62288 2147 RANDOLPH 6189659732 CE NO 4998 R_11 0 R_11 2630 R_11 -1 U_11 2012 00 00 00 -89.658669 38.003021 17 157 72468 33262 32 9511 4060 1712 0 1 0 .
8 NY NY0601 002 7200592060 SUNSHINE HALL FREE LIBRARY 14 PROCTOR ROAD ELDRED 12732 0157 SULLIVAN 8455576258 CE NO 2300 R_11 0 R_11 1250 R_11 52 R_11 2012 00 00 00 -74.882528 41.526061 36 105 00000 77079 42 9524 1021 3619 0 1 0 .
9 FL FL0001 012 FL0001-012 REDDICK PUBLIC LIBRARY 15150 N.W. GAINESVILLE ROAD REDDICK 32686 3221 MARION 3524382566 BR NC 2496 R_11 0 R_11 1228 R_11 52 R_11 2012 00 00 00 -82.197543 29.369123 12 083 59675 332472 42 2 2056 1205 0 1 36100 0
10 NC NC0010 009 R-HYCONEECHEE-CC CARRBORO CYBRARY 100 N GREENSBORO ST CARRBORO 27510 2016 ORANGE 9199187387 BR NC 1060 R_11 0 R_11 1560 R_11 52 R_11 2012 00 00 15 -79.072256 35.910375 37 135 10620 135418 21 107.0500031 3021 3704 0 1 20500 0
11 WV WV0077 004 076B COAL RIVER 494 JOHN SLACK CIRCLE RACINE 25165 M BOONE 3048378437 BR NO 1200 R_11 0 R_11 1820 R_11 52 R_11 2012 00 00 00 -81.656444 38.145905 54 005 00000 24459 41 9582 3074 5403 X 14 16620 0
12 TX TX0279 002 360 SHEPHERD PUBLIC LIBRARY 30 N LIBERTY ST SHEPHERD 77371 2460 SAN JACINTO 9366283515 CE NC 2668 R_11 0 R_11 1626 R_11 52 R_11 2012 00 00 00 -94.997618 30.498398 48 407 67424 26876 42 2001.01001 1011 4808 0 1 0 .
13 MI MI0261 002 MI0261-002 SHIAWASSEE DISTRICT LIBRARY 502 WEST MAIN STREET OWOSSO 48867 2687 SHIAWASSEE 9897255134 CE NO 8400 R_11 0 R_11 2868 R_11 52 R_11 2012 00 00 00 -84.177198 42.997558 26 155 61940 69934 32 306 1007 2604 0 1 37020 1
14 NE NE0210 002 235T SPENCER TOWNSHIP LIBRARY 110 WEST MAIN STREET SPENCER 68777 0189 BOYD 4025891331 CE NO 1750 R_11 0 R_11 546 R_11 52 R_11 2012 00 00 00 -98.701432 42.874026 31 015 46275 2081 43 9758 1234 3103 0 1 0 .
15 ND ND0012 002 ND0012-002 CARNEGIE REGIONAL LIBRARY 49 WEST 7TH STREET GRAFTON 58237 1050 WALSH 7013522754 CE CC 8692 R_11 0 R_11 2000 R_11 50 R_11 2012 00 00 00 -97.41183 48.417585 38 099 31820 11032 33 9580 1077 3800 0 1 0 .
16 CT CT0193 002 3900 EASTFORD PUBLIC LIBRARY 179 EASTFORD RD. EASTFORD 06242 0908 WINDHAM 8609740125 CE NO 1512 R_11 0 R_11 1216 R_11 52 R_11 2012 00 00 00 -72.080012 41.901001 09 015 00000 118205 42 9022 1049 0902 0 1 49340 0
17 IL IL0421 002 3053900 PECATONICA PUBLIC LIBRARY DISTRICT 400 WEST ELEVENTH STREET PECATONICA 61063 9173 WINNEBAGO 8152392616 CE NC 11800 R_11 0 R_11 2080 R_11 -1 U_11 2012 00 00 00 -89.365175 42.304798 17 201 58408 293660 42 43 2010 1716 0 1 40420 0
18 AR AR0019 002 AR019-002 LYDA MILLER PUBLIC LIBRARY 2609 HIGHWAY 367 S BALD KNOB 72010 0287 WHITE 5017245452 BR NO 2100 R_11 0 R_11 -1 U_11 52 R_11 2012 00 06 00 -91.563371 35.315974 05 145 03280 78089 32 706 4050 0502 0 1 42620 1
19 TX TX0473 002 513 ELGIN PUBLIC LIBRARY 404 N MAIN ST ELGIN 78621 2625 BASTROP 5122815678 CE NC 12738 R_11 0 R_11 1983 R_11 52 R_11 2012 00 00 00 -97.371621 30.350555 48 021 23044 75028 32 9502 2001 4810 0 1 12420 0
20 MA MA0164 002 MALDEN MALDEN PUBLIC LIBRARY 36 SALEM ST. MALDEN 02148 5208 MIDDLESEX 7813240218 CE NC 44000 R_11 0 R_11 3126 R_11 52 R_11 2012 00 00 00 -71.066333 42.427158 25 017 37875 1522050 21 3416 5007 2505 0 1 14460 0
21 WI WI0409 002 WI0409 LOWELL PUBLIC LIBRARY 105 N. RIVER ST. LOWELL 53557 0015 DODGE 9209275700 CE NO 900 R_11 0 R_11 1040 R_11 52 R_11 2012 00 00 00 -88.79318 43.345758 55 027 00000 88721 42 9618 1101 5505 X 15 13180 1
22 PA PA0413 002 901630213 BURGETTSTOWN COMMUNITY LIBRARY 2 KERR ST BURGETTSTOWN 15021 1127 WASHINGTON 7249479780 CE NC 6781 R_11 0 R_11 2392 R_11 52 R_11 2012 00 00 00 -80.389683 40.379256 42 125 10224 208170 42 7127 1030 4218 0 1 38300 0
23 NE NE0091 002 101C GILBERT PUBLIC LIBRARY 628 SECOND STREET FRIEND 68359 1308 SALINE 4029475081 CE NO 1678 R_11 0 R_11 1196 R_11 52 R_11 2012 00 00 00 -97.285879 40.653724 31 151 17775 14398 43 9607 2058 3103 0 1 0 .
24 KS KS0028 002 KS0160 KANOPOLIS PUBLIC LIBRARY 221 N. KANSAS KANOPOLIS 67454 0205 ELLSWORTH 7854723053 CE NO 897 R_11 0 R_11 832 R_11 52 R_11 2012 00 00 00 -98.157901 38.711743 20 053 35950 6478 42 866 2294 2001 0 1 0 .
25 IL IL0098 059 3010857 PORTAGE-CRAGIN BRANCH 5108 WEST BELMONT AVENUE CHICAGO 60641 4206 COOK 3127440152 BR CC 14000 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -87.754563 41.938765 17 031 14000 5214098 11 1510.01001 2008 1704 0 1 16980 0
26 PA PA0083 002 905620545 SHEFFIELD TOWNSHIP LIBRARY 20 LEATHER ST SHEFFIELD 16347 0607 WARREN 8149683439 CE NO 1131 R_11 0 R_11 1352 R_11 52 R_11 2012 00 00 00 -79.033263 41.701956 42 123 69984 41480 42 9712 3019 4205 0 1 47620 1
27 UT UT0072 001 UT0072-001 SALEM CITY LIBRARY 59 SOUTH MAIN STREET SALEM 84653 9601 UTAH 8014232622 CE NC 4150 R_11 0 R_11 2216 R_11 52 R_11 2012 00 00 00 -111.673401 40.053702 49 049 65770 530104 32 104.0699997 2016 4903 0 1 39340 0
28 NJ NJ0048 002 NJ0048-002 ORADELL PUBLIC LIBRARY 375 KINDERKAMACK ROAD ORADELL 07649 2122 BERGEN 2012622613 CE NC 16000 R_11 0 R_11 3016 R_11 52 R_11 2012 00 00 00 -74.031827 40.953183 34 003 54990 912773 21 400.019989 4006 3405 0 1 35620 0
29 WI WI0191 002 WI0191 MENOMONEE FALLS PUBLIC LIBRARY W156N8436 PILGRIM RD. MENOMONEE FALLS 53051 3140 WAUKESHA 2625328930 CE NC 52951 R_11 0 R_11 3328 R_11 52 R_11 2012 00 00 00 -88.103683 43.170852 55 133 51000 390701 21 2001.030029 3023 5505 0 1 33340 0
30 NC NC0033 002 C-FRANKLIN-F FRANKLIN COUNTY LIBRARY 906 N MAIN ST LOUISBURG 27549 2199 FRANKLIN 9194962111 CE NC 6000 R_11 0 R_11 2704 R_11 52 R_11 2012 00 00 15 -78.296077 36.112774 37 069 39360 61181 32 603.0100098 1018 3701 0 1 39580 0
31 FL FL0042 006 FL0042-006 DUNBAR JUPITER HAMMON PUBLIC LIBRARY 3095 BLOUNT STREET FORT MYERS 33916 4100 LEE 2395334150 BR NC 11400 R_11 0 R_11 1992 R_11 52 R_11 2012 00 00 00 -81.84986 26.642837 12 071 24125 631602 13 5.019999981 2011 1219 0 1 15980 0
32 LA LA0038 005 LA0038 VERNON PARISH LIBRARY BOOKMOBILE 1401 NOLAN TRACE LEESVILLE 71446 8378 VERNON 3372392027 BS NO -3 U_11 1 R_11 1248 R_11 52 R_11 2012 00 00 00 -93.133117 31.328122 22 115 00000 52178 43 9501 1052 2204 2 15 22860 1
33 FL FL0058 002 FL0058-002 NORTH PALM BEACH PUBLIC LIBRARY 303 ANCHORAGE DRIVE NORTH PALM BEACH 33408 4990 PALM BEACH 5618413383 CE NC 24893 R_11 0 R_11 3024 R_11 52 R_11 2012 00 00 00 -80.057184 26.810361 12 099 49600 1337512 21 7.019999981 1015 1218 0 1 33100 0
34 MO MO0037 002 MO0036-002 UNIVERSITY CITY PUBLIC LIBRARY 6701 DELMAR BLVD UNIVERSITY CITY 63130 3199 ST. LOUIS 3147273150 CE NC 43000 R_11 0 R_11 3744 R_11 52 R_11 2012 00 00 00 -90.308719 38.656351 29 189 75220 999321 21 2161 2010 2901 0 1 41180 0
35 TX TX0582 002 575 MCMULLEN MEMORIAL LIBRARY 900 N MAIN ST HUNTINGTON 75949 M ANGELINA 9368764516 CE NO 2500 R_11 0 R_11 1792 R_11 52 R_11 2012 00 00 00 -94.572496 31.285469 48 005 35492 87276 42 13 1016 4801 0 1 31260 1
36 CT CT0109 002 9902 ATWATER MEMORIAL LIBRARY 1720 FOXON RD. NORTH BRANFORD 06471 0258 NEW HAVEN 2033156020 CE NC 13000 R_11 0 R_11 2830 R_11 52 R_11 2012 00 00 00 -72.765106 41.328739 09 009 00000 862812 21 1861 1010 0903 0 1 35300 0
37 AZ AZ0064 011 BR-GEASA GEASA-MARANA BRANCH LIBRARY 13370 LON ADAMS ROAD MARANA 85653 9050 PIMA 5205945255 BR NC 2900 R_11 0 R_11 2034 R_11 52 R_11 2012 00 00 00 -111.208324 32.449152 04 019 44270 987573 42 44.29999924 2025 0401 0 1 46060 0
38 TX TX0216 005 30.53 THEODORE JOHNS BRANCH LIBRARY 4255 FANNETT RD BEAUMONT 77705 M JEFFERSON 4098425223 BR CC 11970 R_11 0 R_11 3132 R_11 52 R_11 2012 00 00 00 -94.129488 30.045033 48 245 07000 253160 12 22 2023 4814 0 1 13140 0
39 LA LA0044 012 49 GENEALOGY BRANCH & ADM. OFFICE 200 EAST MULBERRY STREET AMITE 70422 2524 TANGIPAHOA 9857487559 BR NO 8000 R_11 0 R_11 1716 R_11 52 R_11 2012 00 00 00 -90.506645 30.728051 22 105 01885 122519 32 9534 3091 2205 0 1 25220 0
40 MD MD0024 005 MD0024-005 POCOMOKE BRANCH 301 MARKET ST. POCOMOKE CITY 21851 1113 WORCESTER 4109570878 BR NO 6728 R_11 0 R_11 2136 R_11 52 R_11 2012 00 00 00 -75.566713 38.074163 24 047 62475 51446 32 9515 3032 2401 0 1 41540 0
41 IL IL0318 003 3043000 MARION CARNEGIE LIBRARY 206 SOUTH MARKET STREET MARION 62959 2516 WILLIAMSON 6189935935 CE NO 21000 R_11 0 R_11 3129 R_11 -1 U_11 2012 00 00 00 -88.927162 37.729836 17 199 46916 66680 33 211 3029 1712 0 1 16060 0
42 IA IA0307 002 RD FONTANELLE PUBLIC LIBRARY 303 WASHINGTON FONTANELLE 50846 0387 ADAIR 6417454981 CE NO 2000 R_11 0 R_11 1040 R_11 52 R_11 2012 00 00 00 -94.563977 41.289591 19 001 28290 7572 43 9603 4125 1903 0 1 0 .
43 PR PR0010 001 BP0009 MOROVIS ELECTRONIC MUNICIPAL LIBRARY JOSE DEL RIO ST., CORNER OF BETANCE MOROVIS 00687 M MOROVIS 7878626161 CE NO -1 U_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -66.427046 18.340777 72 101 29555 32753 21 9553 3018 7298 X 14 41980 0
44 OH OH0188 002 288C IDA RUPP PUBLIC LIBRARY 310 MADISON ST. PORT CLINTON 43452 1921 OTTAWA 4197323212 CE NC 17075 R_11 0 R_11 3119 R_11 52 R_11 2012 00 00 00 -82.941131 41.510222 39 123 64150 41435 31 506 2000 3909 0 1 38840 1
45 MD MD0008 004 MD0008-004 NORTH EAST BRANCH 106 W. CECIL AVE. NORTH EAST 21901 3506 CECIL 4109966269 BR NO 2800 R_11 0 R_11 2600 R_11 52 R_11 2012 00 00 00 -75.945126 39.60096 24 015 56450 101628 31 309.0299988 1067 2401 0 1 37980 0
46 LA LA0055 007 59 DELMONT GARDENS BRANCH 3351 LORRAINE STREET BATON ROUGE 70805 2724 EAST BATON ROUGE 2253547040 BR CC 19267 R_11 0 R_11 3432 R_11 52 R_11 2012 00 00 00 -91.156007 30.496636 22 033 05000 441602 12 3 1023 2202 0 1 12940 0
47 VA VA0014 005 VA0014-005 PORTER BRANCH 2001 PARKWAY BOULEVARD STAFFORD 22554 3972 STAFFORD 5406594909 BR NO 23000 R_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -77.447472 38.464856 51 179 00000 132246 21 102.1399994 2007 5101 0 1 47900 0
48 WI WI0198 002 WI0198 MILTON PUBLIC LIBRARY 430 E. HIGH ST., #100 MILTON 53563 1579 ROCK 6088687462 CE NC 8000 R_11 0 R_11 2756 R_11 52 R_11 2012 00 00 00 -88.944389 42.77298 55 105 52200 160067 23 31 4016 5501 0 1 27500 0
49 IA IA0544 002 IA0563 WASHTA PUBLIC LIBRARY 100 S 5TH AVE WASHTA 51061 1016 CHEROKEE 7124476546 CE NO 1353 R_11 0 R_11 1222 R_11 52 R_11 2012 00 00 15 -95.720114 42.57533 19 035 82380 12029 43 803 2316 1904 0 1 0 .
50 NH NH0174 002 NH895 GILMAN LIBRARY 100 MAIN STREET ALTON 03809 4618 BELKNAP 6038752550 CE NO 6996 R_11 0 R_11 1872 R_11 52 R_11 2012 00 00 00 -71.213211 43.452041 33 001 00980 60189 42 9665 2060 3301 0 1 29060 1
51 CT CT0175 002 15900 WETHERSFIELD PUBLIC LIBRARY 515 SILAS DEANE HIGHWAY WETHERSFIELD 06109 2216 HARTFORD 8605292665 CE NC 32877 R_11 0 R_11 2968 R_11 52 R_11 2012 00 00 00 -72.663363 41.711653 09 003 84970 896248 21 4922 1007 0901 0 1 25540 0
52 NH NH0030 002 NH89126 MAXFIELD PUBLIC LIBRARY 8 ROUTE 129 LOUDON 03307 0814 MERRIMACK 6037985153 CE NO 6800 R_11 0 R_11 1768 R_11 52 R_11 2012 00 00 00 -71.467819 43.286141 33 013 43300 146614 42 360 2046 3302 0 1 18180 1
53 NY NY0005 015 0800000000 NORTH PARK BRANCH LIBRARY 975 HERTEL AVENUE BUFFALO 14216 2201 ERIE 7168753748 BR CC 3967 R_11 0 R_11 1568 R_11 52 R_11 2012 00 00 00 -78.871968 42.94775 36 029 11000 919627 11 50 1005 3626 0 1 15380 0
54 OK OK0018 002 24 CHANDLER PUBLIC LIBRARY 1021 S MANVEL CHANDLER 74834 3853 LINCOLN 4052583204 CE NO 2500 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -96.880778 35.700289 40 081 13500 34293 32 9617 4057 4003 0 1 36420 0
55 ND ND0037 002 ND0037-002 HANKINSON PUBLIC LIBRARY 315 MAIN AVENUE S HANKINSON 58041 0244 RICHLAND 7012427929 CE NO 400 R_11 0 R_11 1198 R_11 51 R_11 2012 00 00 00 -96.902081 46.069547 38 077 34900 16261 43 9714 2037 3800 0 1 47420 1
56 IN IN0207 009 8412 TRAFALGAR BRANCH 424 TOWER STREET TRAFALGAR 46181 8876 JOHNSON 3178789560 BR NO 19000 R_11 0 R_11 3172 R_11 52 R_11 2012 00 00 00 -86.148687 39.413997 18 081 76310 141439 41 6114 2051 1809 0 1 26900 0
57 KY KY0071 003 MARION MARION COUNTY PUBLIC LIBRARY 201 EAST MAIN STREET LEBANON 40033 1133 MARION 2706924698 BS NO -3 U_11 1 R_11 1012 R_11 44 R_11 2012 00 00 00 -85.250194 37.570737 21 155 44344 20049 32 9702 2017 2101 0 1 0 .
58 NY NY0562 033 6800310000 LEFRAK CITY 98-30 57 AVENUE CORONA 11368 4696 QUEENS 7185927677 BR CC 18000 R_11 0 R_11 1820 R_11 52 R_11 2012 00 00 00 -73.861226 40.738002 36 081 51000 2256438 11 455 3000 3614 4 15 35620 0
59 NC NC0014 003 R-PETTIGREW-P PERQUIMANS COUNTY LIBRARY 110 W ACADEMY ST HERTFORD 27944 1306 PERQUIMANS 2524265319 BR NO 5320 R_11 0 R_11 2278 R_11 52 R_11 2012 00 00 15 -76.471096 36.188915 37 143 30900 13458 42 9202.009766 3019 3701 0 1 21020 1
60 IL IL0140 002 3022800 DIVERNON TOWNSHIP LIBRARY 221 SOUTH SECOND STREET DIVERNON 62530 0140 SANGAMON 2176283813 CE NO 1300 R_11 0 R_11 1560 R_11 -1 U_11 2012 00 00 00 -89.65852 39.565293 17 167 20045 198949 41 33 4122 1718 0 1 44100 0
61 GA GA0010 005 6282PICKENS PICKENS COUNTY PUBLIC LIBRARY 100 LIBRARY LANE JASPER 30143 1364 PICKENS 7066925411 BR NO 11000 R_11 0 R_11 3320 R_11 52 R_11 2012 00 00 00 -84.420188 34.467478 13 227 41932 29431 32 502 1040 1309 2 14 12060 0
62 MN MN0085 002 S1310 BLOOMING PRAIRIE BRANCH LIBRARY 138 HIGHWAY AVE SOUTH BLOOMING PRAIRIE 55917 0187 STEELE 5075837750 BR NO 3000 R_11 0 R_11 2213 R_11 52 R_11 2012 00 00 00 -93.049227 43.866202 27 147 06580 36541 43 9608 4004 2701 0 5 36940 1
63 MD MD0003 039 MD0003 SOUTHEAST ANCHOR BRANCH 3601 EASTERN AVENUE BALTIMORE 21224 M BALTIMORE CITY 4103961580 BR CC 27000 R_11 0 R_11 2527 R_11 52 R_11 2012 00 00 00 -76.567069 39.286587 24 510 04000 620216 11 2609 1010 2403 0 1 12580 0
64 TX TX0012 002 109 DENTON PUBLIC LIBRARY 502 OAKLAND ST DENTON 76201 3102 DENTON 9403498750 CE NC 22876 R_11 0 R_11 3161 R_11 52 R_11 2012 00 00 00 -97.129918 33.219673 48 121 19972 685601 12 206.0099945 3025 4826 0 1 19100 0
65 MT MT0044 002 747 LAUREL PUBLIC LIBRARY 720 WEST 3RD ST LAUREL 59044 0068 YELLOWSTONE 4066284961 CE NO 6000 R_11 0 R_11 2338 R_11 51 R_11 2012 00 00 00 -108.780888 45.671408 30 111 42700 149907 31 19.01000023 2007 3000 0 1 13740 0
66 NJ NJ0194 008 1225F ISELIN BRANCH 1081 GREEN ST. ISELIN 08830 2171 MIDDLESEX 7327267073 BR NC 9000 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.313243 40.571154 34 023 34470 816618 21 26.03000069 2000 3406 0 1 35620 0
67 FL FL0005 003 FL0005-003 ALAFAYA BRANCH 12000 EAST COLONIAL DRIVE ORLANDO 32826 4705 ORANGE 4078357323 BR CC 12000 R_11 0 R_11 3150 R_11 52 R_11 2012 00 00 00 -81.203356 28.566308 12 095 00410 1171018 21 167.2700043 1000 1209 0 1 36740 0
68 LA LA0002 003 10 MONTGOMERY BRANCH 940 CADDO STREET MONTGOMERY 71454 0157 GRANT 3186463660 BR NO 770 R_11 0 R_11 1456 R_11 52 R_11 2012 00 00 00 -92.889812 31.667523 22 043 51620 22115 42 202 1127 2205 0 1 10780 0
69 IA IA0400 002 VT CRESCO PUBLIC LIBRARY 320 N ELM ST CRESCO 52136 1452 HOWARD 5635472540 CE NO 7800 R_11 0 R_11 3120 R_11 52 R_11 2012 00 00 15 -92.11626 43.374078 19 089 17220 9533 33 9601 4021 1901 0 1 0 .
70 IL IL0031 002 3003100 BARCLAY PUBLIC LIBRARY DISTRICT 220 SOUTH MAIN STREET WARRENSBURG 62573 0349 MACON 2176723621 CE NO 5000 R_11 0 R_11 2600 R_11 -1 U_11 2012 00 00 00 -89.062322 39.929914 17 115 78916 110616 41 28 1137 1713 0 1 19500 0
71 CT CT0022 002 2100 DAVID M. HUNT LIBRARY 63 MAIN ST. CANAAN 06031 0217 LITCHFIELD 8608247424 CE NO 3600 R_11 0 R_11 1456 R_11 52 R_11 2012 00 00 00 -73.328793 42.026425 09 005 10870 188923 42 2602 1020 0905 0 1 45860 1
72 CA CA0119 002 M715 CROWELL PUBLIC LIBRARY 1890 HUNTINGTON DR. SAN MARINO 91108 2595 LOS ANGELES 6263000777 CE NC 29000 R_11 0 R_11 3224 R_11 52 R_11 2012 00 00 00 -118.112501 34.119348 06 037 68224 9889025 21 4641 4005 0627 0 1 31080 0
73 MN MN0043 009 M0715 NEW BRIGHTON LIBRARY 400 10TH STREET NW NEW BRIGHTON 55112 6806 RAMSEY 6517246002 BR NC 6250 R_11 0 R_11 294 R_11 9 R_11 2012 02 00 00 -93.191665 45.065114 27 123 45430 515336 21 412 1003 2704 0 1 33460 0
74 GA GA0008 018 GA0008 TYBEE 403 BUTLER AVENUE TYBEE ISLAND 31328 9719 CHATHAM 9127867733 BR NC 4000 R_11 0 R_11 1528 R_11 52 R_11 2012 00 00 00 -80.842618 32.008883 13 051 78036 271896 31 111.0299988 2022 1301 0 1 42340 0
75 NH NH0042 002 NH89137 WADLEIGH MEMORIAL LIBRARY 49 NASHUA STREET MILFORD 03055 3753 HILLSBOROUGH 6036732408 CE NO 13500 R_11 0 R_11 2923 R_11 52 R_11 2012 00 00 00 -71.648234 42.835511 33 011 47940 401842 22 162.0099945 5021 3302 0 1 31700 0
76 NY NY0069 002 7800020610 FREE LIBRARY OF THE BELMONT LITERARY AND HIST 2 WILLETS AVENUE BELMONT 14813 1025 ALLEGANY 5852685308 CE NO 8000 R_11 0 R_11 1000 R_11 50 R_11 2012 00 00 00 -78.034633 42.223293 36 003 05815 48744 42 9506 3060 3623 0 1 0 .
77 IL IL0243 002 3034900 HIGHWOOD PUBLIC LIBRARY 102 HIGHWOOD AVENUE HIGHWOOD 60040 1520 LAKE 8474325404 CE NC 10363 R_11 0 R_11 2128 R_11 -1 U_11 2012 00 00 00 -87.810707 42.201979 17 097 34865 701575 21 8652 1007 1710 0 1 16980 0
78 VA VA0005 008 VA0005-008 WESTOVER BRANCH LIBRARY 1644 N.MCKINLEY STREET ARLINGTON 22205 2855 ARLINGTON 7032285260 BR NC 16403 R_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -77.140244 38.888422 51 013 03000 216118 12 1010 4003 5108 4 15 47900 0
79 AZ AZ0111 002 CE-COPPER COPPER QUEEN LIBRARY 6 MAIN STREET BISBEE 85603 9901 COCHISE 5204324232 CE NO 9000 R_11 0 R_11 2236 R_11 52 R_11 2012 00 00 00 -109.915161 31.441616 04 003 06260 132770 33 10 2015 0402 0 1 43420 0
80 SD SD0042 002 SD0042-002 DOROTHEE PIKE MEMORIAL LIBRARY 225 N MAIN AVE LAKE PRESTON 57249 0036 KINGSBURY 6058474843 CE NO 392 R_11 0 R_11 988 R_11 52 R_11 2012 00 00 15 -97.377319 44.362653 46 077 35500 5152 43 9581 1191 4600 0 1 0 .
81 WI WI0322 002 WI0322 TOMAHAWK PUBLIC LIBRARY 300 W. LINCOLN AVE. TOMAHAWK 54487 1202 LINCOLN 7154532455 CE NO 11465 R_11 0 R_11 2596 R_11 52 R_11 2012 00 00 00 -89.733724 45.473925 55 069 80125 28492 32 9602 2040 5507 0 1 32980 1
82 NY NY0146 002 2400113890 PECK MEMORIAL LIBRARY 24 MAIN STREET MARATHON 13803 0325 CORTLAND 6078496135 CE NO 3052 R_11 0 R_11 1490 R_11 52 R_11 2012 00 00 00 -76.033345 42.441233 36 023 45392 49619 42 9711 3064 3622 0 1 18660 1
83 DC DC0001 017 SOW SOUTHWEST BRANCH LIBRARY 900 WESLEY PLACE, SW WASHINGTON 20024 4212 DIST OF COLUMBIA 2027244752 BR CC 22032 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -77.016219 38.879185 11 001 50000 619020 11 102 2044 1198 0 1 47900 0
84 OR OR0140 001 OR0140 LANE LIBRARY DISTRICT 64 W. OREGON AVE. CRESWELL 97426 0366 LANE 5038953053 CE NC 4950 R_11 0 R_11 2300 R_11 52 R_11 2012 00 00 00 -123.019529 43.917861 41 039 16950 353481 31 11.01000023 3086 4104 0 1 21660 0
85 IL IL0445 004 3056601 YORK STREET BRANCH LIBRARY 639 YORK STREET QUINCY 62301 3918 ADAMS 2172231309 BR NO 2775 R_11 0 R_11 2020 R_11 52 R_11 2012 00 00 00 -91.40595 39.929353 17 001 62367 67169 33 7 2054 1718 0 1 39500 1
86 OH OH0226 003 326B01 BROOKFIELD BRANCH LIBRARY 7032 GROVE ST BROOKFIELD 44403 0052 TRUMBULL 3304488134 BR NC 4200 R_11 0 R_11 2652 R_11 52 R_11 2012 00 00 00 -80.565232 41.232504 39 155 09200 208874 21 9314 4006 3913 0 1 49660 0
87 WI WI0052 002 WI0052 CAMPBELLSPORT PUBLIC LIBRARY 220 N. HELENA CAMPBELLSPORT 53010 0405 FOND DU LAC 9205338534 CE NC 10440 R_11 0 R_11 2020 R_11 52 R_11 2012 00 00 00 -88.276351 43.599297 55 039 12325 101856 42 422 3028 5506 0 1 22540 0
88 AR AR0001 017 AR0001-13 OLEY E. ROOKER LIBRARY 11 OTTER CREEK CT. LITTLE ROCK 72210 M PULASKI 5019075991 BR NC 13550 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -92.427498 34.659253 05 119 41000 386822 41 42.20000076 3009 0502 0 1 30780 0
89 GA GA0022 042 GA0022 NORTHEAST-SPRUILL OAKS REGIONAL LIBRARY 9560 SPRUILL ROAD ALPHARETTA 30022 5550 FULTON 7703608820 BR NC 25000 R_11 0 R_11 2882 R_11 52 R_11 2012 00 00 00 -84.22258 34.01515 13 121 42425 949580 21 114.25 2005 1306 0 1 12060 0
90 ME ME0247 002 93 NORTH GORHAM PUBLIC LIBRARY 2 STANDISH NECK ROAD GORHAM 04038 2469 CUMBERLAND 2078922575 CE NO 1200 R_11 0 R_11 750 R_11 52 R_11 2012 00 00 00 -70.45554 43.798963 23 005 00000 282669 32 41 2006 2301 0 1 38860 0
91 ME ME0079 002 83 FORT KENT PUBLIC LIBRARY 1 MONUMENT SQUARE FORT KENT 04743 1216 AROOSTOOK 2078343048 CE NO 3153 R_11 0 R_11 1579 R_11 52 R_11 2012 00 00 00 -68.595746 47.250002 23 003 25720 71388 43 9506 3020 2302 4 14 0 .
92 MI MI0336 002 MI0336-002 THOMAS TOWNSHIP LIBRARY 8207 SHIELDS DRIVE SAGINAW 48609 4814 SAGINAW 9897813770 CE CC 14360 R_11 0 R_11 2732 R_11 52 R_11 2012 00 00 00 -84.074739 43.41882 26 145 73560 198990 22 120.0299988 1011 2604 0 1 40980 0
93 TN TN0133 006 KN001-05 FARRAGUT BRANCH LIBRARY 417 N. CAMPBELL STATION ROAD KNOXVILLE 37934 2708 KNOX 8657771750 BR CC 10100 R_11 0 R_11 2860 R_11 52 R_11 2012 00 00 00 -84.168446 35.88913 47 093 25760 436877 21 58.09000015 2020 4702 0 1 28940 0
94 TX TX0160 002 245 RED WALLER COMMUNITY LIBRARY 109 MELTON ST MALAKOFF 75148 9347 HENDERSON 9034891818 CE NO 4800 R_11 0 R_11 1500 R_11 50 R_11 2012 00 00 00 -96.014132 32.170392 48 213 46224 78753 33 9510 2059 4805 0 1 11980 1
95 LA LA0058 008 LA0058 MILTON H. LATTER MEMORIAL BRANCH 5120 ST. CHARLES AVENUE NEW ORLEANS 70115 4941 ORLEANS 5045962625 BR CC 9000 R_11 0 R_11 2704 R_11 52 R_11 2012 00 00 00 -90.109987 29.926997 22 071 55000 360341 11 108 1015 2202 0 1 35380 0
96 WV WV0020 005 019C BOOKMOBILE 3100 EMERSON AVE. PARKERSBURG 26104 2414 WOOD 3044204587 BS NC -3 U_11 1 R_11 1040 R_11 52 R_11 2012 00 00 00 -81.53833 39.28578 54 107 62140 86837 13 3 2003 5401 0 1 37620 0
97 CA CA0019 004 M615 CARNEGIE TECHNOLOGY CENTER BRANCH 420 HEBER AVE. CALEXICO 92231 2559 IMPERIAL 7603575525 BR NC 4000 R_11 0 R_11 708 R_11 52 R_11 2012 00 00 00 -115.493508 32.669062 06 025 09710 175897 31 121 3011 0651 0 1 20940 0
98 PA PA0385 026 926510006 LAWNCREST BRANCH LIBRARY 6098 RISING SUN AVENUE PHILADELPHIA 19111 6009 PHILADELPHIA 2156850549 BR CC 7184 R_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -75.099695 40.045973 42 101 60000 1538567 11 305.019989 1004 4213 0 1 37980 0
99 NY NY0306 002 3600414840 C. W. CLARK MEMORIAL LIBRARY 160 NORTH MAIN STREET ORISKANY FALLS 13425 0670 ONEIDA 3158217850 CE NC 3141 R_11 0 R_11 2060 R_11 52 R_11 2012 00 00 00 -75.459544 42.940144 36 065 55376 234155 42 256 2068 3622 0 1 46540 0
100 NC NC0061 005 C-UNION-W WAXHAW LIBRARY 509 S PROVIDENCE ST WAXHAW 28173 9339 UNION 7048433131 BR NC 2900 R_11 0 R_11 1489 R_11 52 R_11 2012 00 00 15 -80.741342 34.922191 37 179 71460 205193 41 210.1399994 1009 3709 0 1 16740 0
101 IL IL0194 002 3029200 FRANKLIN PARK PUBLIC LIBRARY DISTRICT 10311 GRAND AVENUE FRANKLIN PARK 60131 2225 COOK 8474556016 CE NC 25000 R_11 0 R_11 3424 R_11 -1 U_11 2012 00 00 00 -87.882502 41.930234 17 031 27702 5214098 21 8114.02002 2009 1705 0 1 16980 0
102 OH OH0116 004 216B02 BALTIMORE BRANCH LIBRARY 205 E. MARKET ST. BALTIMORE 43105 1326 FAIRFIELD 7408628505 BR NC 3866 R_11 0 R_11 1632 R_11 51 R_11 2012 00 00 00 -82.600057 39.84531 39 045 03758 147355 31 303 3030 3915 0 1 18140 0
103 MI MI0360 002 MI0360-002 WATERVLIET DISTRICT LIBRARY 333 NORTH MAIN STREET WATERVLIET 49098 9750 BERRIEN 2694636382 CE NC 10272 R_11 0 R_11 2340 R_11 52 R_11 2012 00 00 00 -86.259586 42.19054 26 021 84500 156489 31 103 4027 2606 0 1 35660 0
104 AL AL0108 019 AL0108-019 BIRMINGHAM PUBLIC - TITUSVILLE BRANCH 26TH AVENUE SW BIRMINGHAM 35211 2909 JEFFERSON 2053221140 BR CC 9000 R_11 0 R_11 2385 R_11 52 R_11 2012 00 00 00 -86.833206 33.491538 01 073 07000 658967 12 51.00999832 3026 0107 4 15 13820 0
105 TX TX0443 005 86.66 SOUTH REGIONAL LIBRARY 2101 LAKE ROBBINS DR THE WOODLANDS 77380 M MONTGOMERY 9364427727 BR NC 30000 R_11 0 R_11 3141 R_11 52 R_11 2012 00 00 00 -95.465652 30.162471 48 339 72656 471704 23 6917 1033 4808 0 1 26420 0
106 FL FL0012 042 FL0012-042 TAMARAC BRANCH 8701 W. COMMERCIAL BLVD. TAMARAC 33351 4310 BROWARD 9547202282 BR NC 30000 R_11 0 R_11 2672 R_11 52 R_11 2012 00 00 00 -80.267013 26.193663 12 011 39550 1784956 21 601.1400146 1004 1220 0 1 33100 0
107 PA PA0007 002 901300753 EVA K BOWLBY PUBLIC LIBRARY 311 NORTH WEST ST WAYNESBURG 15370 1238 GREENE 7246279776 CE NO 9791 R_11 0 R_11 2401 R_11 52 R_11 2012 00 00 00 -80.191465 39.899297 42 059 81832 38424 32 9706 3034 4218 0 1 0 .
108 IN IN0068 012 2713 CENTRE TOWNSHIP BRANCH 1150 EAST KERN ROAD SOUTH BEND 46614 6472 ST JOSEPH 5742513700 BR CC 17160 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -86.232966 41.607649 18 141 71000 266661 12 119 2011 1802 0 1 43780 0
109 MI MI0284 002 MI0284-002 REED CITY PUBLIC LIBRARY 410 WEST UPTON AVENUE REED CITY 49677 1152 OSCEOLA 2318322131 CE NO 3649 R_11 0 R_11 1872 R_11 52 R_11 2012 00 00 00 -85.516822 43.875995 26 133 67820 23455 33 9706 2012 2604 0 1 0 .
110 VT VT0042 002 CORNWALL CORNWALL FREE PUBLIC 2629 RT 30 CORNWALL 05753 9299 ADDISON 8024623615 CE NO 315 R_11 0 R_11 1664 R_11 52 R_11 2012 00 00 00 -73.209627 43.961155 50 001 00000 36785 41 9609 1014 5000 0 1 0 .
111 TX TX0065 002 157 LEE PUBLIC LIBRARY 312 W PACIFIC AVE GLADEWATER 75647 2135 GREGG 9038452640 CE NC 5500 R_11 0 R_11 2048 R_11 52 R_11 2012 00 00 00 -94.946153 32.535873 48 183 29660 122325 31 102 3008 4801 0 1 30980 0
112 CT CT0105 002 9500 PUBLIC LIBRARY OF NEW LONDON 63 HUNTINGTON ST. NEW LONDON 06320 6194 NEW LONDON 8604471411 CE CC 22000 R_11 0 R_11 2678 R_11 52 R_11 2012 00 00 00 -72.099541 41.354992 09 011 52280 274091 13 6905 2026 0902 0 1 35980 0
113 NJ NJ0195 009 1300G MARLBORO LIBRARY 1 LIBRARY COURT MARLBORO 07746 1102 MONMOUTH 7325369406 BR NC 18100 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.262612 40.330578 34 025 63900 630092 21 8097.009766 2021 3406 0 1 35620 0
114 IL IL0037 002 3003700 BEDFORD PARK PUBLIC LIBRARY DISTRICT 7816 WEST 65TH PLACE BEDFORD PARK 60501 1914 COOK 7084586826 CE NC 17000 R_11 0 R_11 3016 R_11 -1 U_11 2012 00 00 00 -87.816069 41.772696 17 031 04572 5214098 21 8205.009766 1026 1703 0 1 16980 0
115 KS KS0191 002 KS0059 CONWAY SPRINGS CITY LIBRARY 210 W. SPRINGS AVE CONWAY SPRINGS 67031 0183 SUMNER 6204562859 CE NO 980 R_11 0 R_11 1040 R_11 52 R_11 2012 00 00 00 -97.63682 37.390358 20 191 15325 23835 42 9622 3026 2004 0 1 48620 0
116 NH NH0055 002 NH89149 NEWFIELDS PUBLIC LIBRARY 76 MAIN STREET NEWFIELDS 03856 0200 ROCKINGHAM 6037788169 CE NO -1 U_11 0 R_11 1456 R_11 52 R_11 2012 00 00 00 -70.932892 43.041363 33 015 00000 296085 31 675.0100098 2014 3301 0 1 14460 0
117 WI WI0308 002 WI0308 JEAN M. THOMSEN MEMORIAL LIBRARY 105 N. GERSHWIN ST. STETSONVILLE 54480 0099 TAYLOR 7156782892 CE NO 3990 R_11 0 R_11 1772 R_11 52 R_11 2012 00 00 00 -90.311907 45.077181 55 119 77100 20759 42 9606 3046 5507 0 1 0 .
118 FL FL0011 019 FL0011-019 SUNTREE/VIERA PUBLIC LIBRARY 902 JORDAN BLASS DRIVE MELBOURNE 32940 3350 BREVARD 3212554404 BR NO 15000 R_11 0 R_11 2716 R_11 -1 U_11 2012 00 00 00 -80.679796 28.215339 12 009 00000 544322 21 641.2700195 4005 1208 0 1 37340 0
119 NY NY0071 002 7800021050 ESSENTIAL CLUB FREE LIBRARY 11 PRATT STREET CANASERAGA 14822 9728 ALLEGANY 6075456443 CE NO 2500 R_11 0 R_11 1144 R_11 52 R_11 2012 00 00 00 -77.775745 42.461616 36 003 12177 48744 42 9501 1037 3623 0 1 0 .
120 WI WI0134 002 WI0134 HILLSBORO PUBLIC LIBRARY 819 HIGH AVE. HILLSBORO 54634 0468 VERNON 6084892192 CE NO 6800 R_11 0 R_11 1716 R_11 52 R_11 2012 00 00 00 -90.341447 43.652202 55 123 34825 30043 43 9601 2032 5503 0 1 0 .
121 FL FL0021 002 FL0021-002 COLUMBIA COUNTY PUBLIC LIBRARY 308 N.W. COLUMBIA AVE. LAKE CITY 32055 2891 COLUMBIA 3867581018 CE NO 15400 R_11 0 R_11 2942 R_11 52 R_11 2012 00 00 00 -82.63798 30.192204 12 023 37775 67383 33 1105 2048 1203 0 1 29380 1
122 FL FL0001 005 FL0001-005 BELLEVIEW PUBLIC LIBRARY 13145 SE HWY 484 BELLEVIEW 34420 5831 MARION 3524382500 BR NC 16000 R_11 0 R_11 2614 R_11 52 R_11 2012 00 00 00 -82.065647 29.028237 12 083 00000 332472 23 11.02000046 2051 1211 0 1 36100 0
123 TN TN0135 015 NA001-14 MADISON BRANCH LIBRARY 610 GALLATIN PIKE SOUTH MADISON 37115 2192 DAVIDSON 6158625868 BR CC 20680 R_11 0 R_11 2600 R_11 52 R_11 2012 00 00 00 -86.71406 36.257013 47 037 52006 635592 11 107.0100021 4001 4705 0 1 34980 0
124 NH NH0220 002 NH8995 WOODSVILLE FREE PUBLIC LIBRARY 14 SCHOOL LANE WOODSVILLE 03785 1227 GRAFTON 6037473483 CE NO 1360 IP10 0 R_11 1092 R_11 52 R_11 2012 00 00 00 -72.036754 44.150391 33 009 87140 88954 43 9606 3035 3302 0 1 17200 1
125 NY NY0651 002 8000580910 BROOKHAVEN FREE 273 BEAVER DAM RD BROOKHAVEN 11719 9607 SUFFOLK 6312861923 CE NC 5047 R_11 0 R_11 3140 R_11 52 R_11 2012 00 00 00 -72.911466 40.773631 36 103 09000 1500338 21 1592.040039 3015 3601 0 1 35620 0
126 IL IL0480 002 3060300 SCHILLER PARK PUBLIC LIBRARY 4200 OLD RIVER ROAD SCHILLER PARK 60176 1630 COOK 8476780433 CE NC 12500 R_11 0 R_11 3328 R_11 -1 U_11 2012 00 00 00 -87.860692 41.955696 17 031 68081 5214098 21 7708 1039 1705 0 1 16980 0
127 NY NY0004 019 0400300000 CROWN HEIGHTS 560 NEW YORK AVENUE BROOKLYN 11225 5296 KINGS 7187731180 BR CC 9280 R_11 0 R_11 2392 R_11 52 R_11 2012 00 00 00 -73.947776 40.661073 36 047 51000 2540230 11 804 1001 3609 0 1 35620 0
128 OH OH0039 011 139BK STARK COUNTY DISTRICT LIBRARY 715 MARKET AVE. CANTON 44702 1080 STARK 3304520665 BS CC -3 U_11 5 R_11 5976 R_11 52 R_11 2012 00 00 00 -81.373216 40.803018 39 151 12000 374328 13 7001 1048 3907 4 16 15940 0
129 GA GA0036 008 GA0036 MARION COUNTY PUBLIC LIBRARY 123 EAST 5TH AVE. BUENNA VISTA 31803 0391 MARION 2296496385 BR NO 4311 R_11 0 R_11 1588 R_11 52 R_11 2012 00 00 00 -84.522819 32.318596 13 197 11728 8706 42 9202 3058 1302 0 1 17980 0
130 NJ NJ0195 006 1300D HAZLET MEMORIAL LIBRAY 251 MIDDLE ROAD HAZLET 07730 1904 MONMOUTH 7322647164 BR NC 10200 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.176972 40.427274 34 025 00000 630092 21 8021 5017 3406 0 1 35620 0
131 SC SC8004 006 SC8004-002 NINETY-SIX BRANCH LIBRARY 100 SOUTH CAMBRIDGE STREET NINETY-SIX 29666 1111 GREENWOOD 8645434749 BR NO 3750 R_11 0 R_11 2314 R_11 52 R_11 2012 00 00 00 -82.023766 34.175093 45 047 50290 69739 42 9707.019531 4019 4503 0 1 24940 1
132 WI WI0382 002 WI0382 DRESSER PUBLIC LIBRARY 117 S. CENTRAL AVE. DRESSER 54009 0547 POLK 7157552944 CE NO 1274 R_11 0 R_11 1250 R_11 50 R_11 2012 00 00 00 -92.633499 45.355307 55 095 20850 43984 42 9607 3074 5507 0 1 0 .
133 OK OK0061 002 65 MAYSVILLE PUBLIC LIBRARY 508 WILLIAMS MAYSVILLE 73057 0878 GARVIN 4058674748 CE NO 3125 R_11 0 R_11 2184 R_11 52 R_11 2012 00 00 00 -97.40843 34.817807 40 049 47150 27387 42 6816 1114 4004 0 1 0 .
134 CA CA0027 006 M623 ATLANTIC BRANCH 2269 S. ATLANTIC BLVD COMMERCE 90040 3955 LOS ANGELES 3237801176 BR NC 3852 R_11 0 R_11 2080 R_11 52 R_11 2012 00 00 00 -118.164562 34.005171 06 037 14974 9889025 21 5323.02002 4024 0640 0 1 31080 0
135 NJ NJ0114 005 0705C FRANKLIN BRANCH 192 DODD STREET EAST ORANGE 07017 2107 ESSEX 9732667053 BR NC 500 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.21016 40.781824 34 013 19390 786754 21 100 1001 3410 0 1 35620 0
136 OH OH0177 002 277C MORLEY LIBRARY 184 PHELPS ST. PAINESVILLE 44077 3926 LAKE 4403523383 CE NC 17500 R_11 0 R_11 3951 R_11 52 R_11 2012 00 00 00 -81.243767 41.727571 39 085 59416 229873 21 2045 1008 3914 0 1 17460 0
137 NY NY0420 002 5600221120 CARTHAGE FREE LIBRARY 412 BUDD STREET CARTHAGE 13619 1206 JEFFERSON 3154932620 CE NO 4800 R_11 0 R_11 2392 R_11 52 R_11 2012 00 00 00 -75.609727 43.979609 36 045 12683 118163 33 609 3023 3621 0 1 48060 0
138 KY KY0073 003 MARTIN RUFUS M. REED PUBLIC LIBRARY 1442 RIVERFRONT ROAD LOVELY 41231 0359 MARTIN 6063956500 BR NO 3400 R_11 0 R_11 2080 R_11 52 R_11 2012 00 00 00 -82.367849 37.78319 21 159 00000 12839 42 9503 1003 2105 X 14 0 .
139 MT MT0051 005 1216 FRENCHTOWN SCHOOL AND COMMUNITY LIBRARY (MISSOULA CO.) 16495 MAIN STREET FRENCHTOWN 59834 M MISSOULA 4066262730 BR NO 4500 R_11 0 R_11 1040 R_11 52 R_11 2012 00 14 00 -114.227048 47.011982 30 063 29350 110114 42 16 1029 3000 0 1 33540 0
140 PA PA0147 002 908561265 MARY S BIESECKER PUB LIBRARY 230 S ROSINA AVE SOMERSET 15501 1937 SOMERSET 8144454011 CE NC 3531 R_11 0 R_11 2345 R_11 52 R_11 2012 00 00 00 -79.082912 40.00724 42 111 71776 77382 32 210 3002 4212 0 1 43740 1
141 IA IA0251 002 MM ALGONA PUBLIC LIBRARY 210 N PHILLIPS ALGONA 50511 1735 KOSSUTH 5152955476 CE NO 16000 R_11 0 R_11 2912 R_11 52 R_11 2012 00 00 15 -94.226822 43.070044 19 109 01135 15369 33 9505 2042 1904 0 1 0 .
142 NY NY0004 061 0400300000 WINDSOR TERRACE 160 EAST 5TH STREET BROOKLYN 11218 1702 KINGS 7186869707 BR CC 7500 R_11 0 R_11 2392 R_11 52 R_11 2012 00 00 00 -73.97657 40.648829 36 047 51000 2540230 11 500 2004 3609 0 1 35620 0
143 IN IN0177 002 7284 BLOOMFIELD-EASTERN GREENE COUNTY PUBLIC LIBRARY 125 SOUTH FRANKLIN STREET BLOOMFIELD 47424 1406 GREENE 8123844125 CE NO 13400 R_11 0 R_11 2808 R_11 52 R_11 2012 00 00 00 -86.93852 39.02559 18 055 05716 33061 32 9554 4026 1808 0 1 0 .
144 NJ NJ0223 002 NJ0223-002 BUTLER PUBLIC LIBRARY 1 ACE ROAD BUTLER 07045 1375 MORRIS 2018383262 CE NC 6324 R_11 0 R_11 2659 R_11 52 R_11 2012 00 00 00 -74.342983 41.003358 34 027 09040 495941 21 405 1007 3411 0 1 35620 0
145 TX TX0247 011 329.299 CINCO RANCH BRANCH LIBRARY 2620 COMMERCIAL CENTER BLVD KATY 77494 6407 FORT BEND 2813951311 BR NC 33500 R_11 0 R_11 2524 R_11 52 R_11 2012 00 00 00 -95.787502 29.725205 48 157 00000 607952 41 6731.02002 1089 4822 2 15 26420 0
146 MN MN0035 015 M0213 ANOKA: RUM RIVER 4201 6TH AVE NW ANOKA 55303 M ANOKA 7635764695 BR NC 30150 R_11 0 R_11 2312 R_11 52 R_11 2012 00 00 15 -93.380862 45.22981 27 003 01720 333226 21 505.0499878 3007 2706 0 1 33460 0
147 OH OH0002 019 102B17 HIGHLAND SQUARE BRANCH LIBRARY 807 W MARKET ST AKRON 44303 1010 SUMMIT 3303762927 BR CC 11500 R_11 0 R_11 2964 R_11 52 R_11 2012 00 06 15 -81.543313 41.096492 39 153 01000 541227 12 5073 3001 3913 0 1 10420 0
148 MA MA0015 002 ATHOL ATHOL PUBLIC LIBRARY 568 MAIN STEET ATHOL 01331 1888 WORCESTER 9782499515 CE NO 8000 R_11 0 R_11 2350 R_11 52 R_11 2012 00 00 15 -72.228447 42.593893 25 027 02515 803785 32 7031 1026 2502 4 14 49340 0
149 CA CA0105 022 M701 SOUTHGATE LIBRARY 6132 66TH AVE. SACRAMENTO 95823 2706 SACRAMENTO 9162642700 BR CC 12000 R_11 0 R_11 1980 R_11 49 R_11 2012 00 00 00 -121.433101 38.492443 06 067 24498 1436262 21 50.02000046 1004 0607 0 1 40900 0
150 CT CT0124 002 11000 PLAINVILLE PUBLIC LIBRARY 56 EAST MAIN ST. PLAINVILLE 06062 1934 HARTFORD 8607931446 CE NC 30000 R_11 0 R_11 3016 R_11 52 R_11 2012 00 00 00 -72.865298 41.671845 09 003 00000 896248 21 4205 4005 0905 0 1 25540 0
151 TX TX0069 002 160 LIBRARY OF GRAHAM 910 CHERRY ST GRAHAM 76450 3547 YOUNG 9405490600 CE NO 14000 R_11 0 R_11 2184 R_11 52 R_11 2012 00 00 00 -98.587919 33.099243 48 503 30392 18385 33 9505 2005 4819 0 1 0 .
152 MI MI0322 002 MI0322-002 SAINT CLAIR SHORES PUBLIC LIBRARY 22500 ELEVEN MILE ROAD SAINT CLAIR SHORES 48081 1399 MACOMB 5867719020 CE NC 30000 R_11 0 R_11 3092 R_11 52 R_11 2012 00 00 00 -82.887251 42.496575 26 099 70760 842881 21 2511 1001 2609 0 1 19820 0
153 TX TX0183 002 269 WARD COUNTY LIBRARY 409 S DWIGHT ST MONAHANS 79756 4609 WARD 4329433332 CE NO 15000 R_11 0 R_11 2452 R_11 52 R_11 2012 00 00 00 -102.887829 31.59298 48 475 48936 10713 32 9502 1052 4823 0 5 0 .
154 AL AL0248 001 506-003 SOUTHSIDE PUBLIC LIBRARY 2255 HIGHWAY 77 SOUTHSIDE 35907 7905 ETOWAH 2564420105 CE NO 1000 R_11 0 R_11 1404 R_11 52 R_11 2012 00 00 00 -86.022239 33.918787 01 055 71832 104298 23 105.0100021 3044 0104 0 1 23460 0
155 ME ME0296 002 268 SWANS ISLAND PUBLIC LIBRARY 451 ATLANTIC ROAD SWAN'S ISLAND 04685 0012 HANCOCK 2075264330 CE NO 3500 R_11 0 R_11 1200 R_11 52 R_11 2012 00 00 00 -68.417378 44.174678 23 009 00000 54551 43 9662 2136 2302 0 1 0 .
156 KS KS0200 002 KS0020 BELLE PLAINE PUBLIC LIBRARY 222 W. 5TH BELLE PLAINE 67013 0700 SUMNER 6204883431 CE NO 1987 R_11 0 R_11 1508 R_11 52 R_11 2012 00 00 00 -97.281473 37.393656 20 191 05500 23835 42 9621 4011 2004 0 1 48620 0
157 CA CA0144 006 M740 SUTTER BRANCH LIBRARY 2147 CALIFORNIA ST. SUTTER 95982 2546 SUTTER 5307550485 BR NC 970 R_11 0 R_11 996 R_11 52 R_11 2012 00 00 00 -121.748948 39.158979 06 101 77378 94951 23 508 2033 0603 0 1 49700 0
158 DC DC0001 012 NOE NORTHEAST BRANCH LIBRARY 330 7TH STREET, NE WASHINGTON 20002 6104 DIST OF COLUMBIA 2026983320 BR CC 13900 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -76.996192 38.893985 11 001 50000 619020 11 83.01999664 1014 1198 0 1 47900 0
159 KY KY0109 007 WARREN GRAHAM DRIVE COMMUNITY BRANCH 305 GRAHAM DRIVE BOWLING GREEN 42101 1140 WARREN 2707811441 BR CC 1627 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -86.441796 37.003255 21 227 08902 115491 13 102 3031 2102 0 1 14540 0
160 FL FL0025 015 FL0025-015 KENDALL BRANCH LIBRARY 9101 S.W. 97 AVENUE MIAMI 33176 1985 MIAMI-DADE 3052790520 BR CC 14000 R_11 0 R_11 2559 R_11 52 R_11 2012 00 00 00 -80.350799 25.685623 12 086 36100 2565440 13 84.05000305 1009 1227 0 1 33100 0
161 PA PA0532 002 902024075 SENIOR BUS 1301 BEAVER AVENUE PITTSBURGH 15233 2342 ALLEGHENY 4123211853 BS CC -3 U_11 1 R_11 403 R_11 50 R_11 2012 00 00 00 -80.028932 40.453027 42 003 61000 1227442 11 9806 1011 4214 0 1 38300 0
162 NJ NJ0204 002 NJ0204-002 FAIR HAVEN PUBLIC LIBRARY 748 RIVER ROAD FAIR HAVEN 07704 3397 MONMOUTH 2017475031 CE NC 1750 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.035853 40.364273 34 025 22440 630092 21 8037 5000 3404 0 1 35620 0
163 VI VI0002 002 VI0002-002 ELAINE I. SPRAUVE PUBLIC LIBRARY EST. ENIGHED CRUZ BAY 00830 M ST. JOHN 3407766359 BR NO 1200 R_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -64.740289 18.338647 78 020 00000 -1 41 9501 3092 7898 X 14 0 .
164 NC NC0104 001 C-CHATHAM-BS CHATHAM COUNTY BOOKMOBILE 500 N 2ND AVE SILER CITY 27344 3123 CHATHAM 9195427725 BS NC -3 U_11 1 R_11 1000 R_11 50 R_11 2012 00 14 15 -79.46469 35.727411 37 037 61860 65280 32 204.0200043 1049 3702 0 1 20500 0
165 TX TX0402 003 49.362 SOUTHMOST BRANCH LIBRARY 4320 SOUTHMOST BLVD BROWNSVILLE 78521 M CAMERON 9565481055 BR CC 20000 R_11 0 R_11 2602 R_11 52 R_11 2012 00 00 00 -97.449958 25.896555 48 061 10768 412577 12 133.0599976 1008 4834 0 1 15180 0
166 OH OH0163 008 OH0163-008 BUCKEYE LAKE BRANCH 41 W FIRST ST BUCKEYE LAKE 43008 1708 LICKING 7409280472 BR NO 1200 R_11 0 R_11 2433 R_11 52 R_11 2012 00 00 00 -82.482686 39.933065 39 089 09890 167194 23 7583 3012 3912 0 1 18140 0
167 GA GA0023 006 6632HILTON IDA HILTON PUBLIC LIBRARY 1105 NORTHWAY DARIEN 31305 1227 MCINTOSH 9124272124 BR NO 6000 R_11 0 R_11 2110 R_11 -1 U_11 2012 00 00 00 -81.417136 31.394249 13 191 00000 14229 31 1102 1079 1301 X 14 15260 0
168 LA LA0057 015 60 ROSEDALE BRANCH 4036 JEFFERSON HIGHWAY OLD JEFFERSON 70121 1630 JEFFERSON 5048384350 BR NC 7138 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -90.168164 29.961761 22 051 38145 433523 21 245 1006 2201 0 1 35380 0
169 WI WI0059 002 WI0059 CHIPPEWA FALLS PUBLIC LIBRARY 105 W. CENTRAL ST. CHIPPEWA FALLS 54729 2397 CHIPPEWA 7157231146 CE NC 18025 R_11 0 R_11 2682 R_11 52 R_11 2012 00 00 00 -91.393911 44.935456 55 017 14575 62857 23 103 1021 5503 0 1 20740 0
170 WI WI0065 002 WI0065 COLFAX PUBLIC LIBRARY 613 MAIN ST. COLFAX 54730 0525 DUNN 7159624334 CE NO 1800 R_11 0 R_11 1820 R_11 52 R_11 2012 00 00 00 -91.727195 44.999765 55 033 16275 44021 42 9703 3057 5503 0 1 32860 1
171 DC DC0001 016 SOE SOUTHEAST BRANCH LIBRARY 403 7TH STREET, SE WASHINGTON 20003 2700 DIST OF COLUMBIA 2026983377 BR CC 6431 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -76.996189 38.88387 11 001 50000 619020 11 65 2000 1198 0 1 47900 0
172 MI MI0376 002 MI0376-002 GEORGE W. SPINDLER MEMORIAL LIBRARY 186 NORTH MAIN STREET WOODLAND 48897 0068 BARRY 2693674694 CE NO 1738 R_11 0 R_11 1040 R_11 52 R_11 2012 00 00 00 -85.13415 42.728953 26 015 88420 58936 42 101 2030 2603 0 1 24340 0
173 WV WV0040 002 39 CLARKSBURG-HARRISON CO. PUBLIC LIBRARY 404 W. PIKE STREET CLARKSBURG 26301 2712 HARRISON 3046272236 CE NO 30442 R_11 0 R_11 3484 R_11 52 R_11 2012 00 00 00 -80.340592 39.280797 54 033 15628 69298 32 301 1055 5401 0 1 17220 1
174 IL IL0524 002 3064900 THREE RIVERS PUBLIC LIBRARY DISTRICT 25207 WEST CHANNON DRIVE CHANNAHON 60410 0300 WILL 8154676200 CE NC 9200 R_11 0 R_11 3464 R_11 -1 U_11 2012 00 00 00 -88.224651 41.434087 17 197 12476 680584 21 8833.049805 1044 1716 0 1 16980 0
175 IA IA0048 002 BW BERTHA BARTLETT PUBLIC LIBRARY 503 BROAD ST STORY CITY 50248 1133 STORY 5157332685 CE NO 8000 R_11 0 R_11 2738 R_11 52 R_11 2012 00 00 15 -93.597291 42.187095 19 169 75675 90816 31 106 1023 1904 0 1 11180 0
176 MT MT0011 003 1634 BUTTE-SILVER BOW PUBLIC LIBRARY SOUTH BRANCH 3100 HARRISON AVE BUTTE 59701 M SILVER BOW 4067233361 BR NO 1200 R_11 0 R_11 1008 R_11 28 R_11 2012 02 00 00 -112.508 45.979868 30 093 11397 34362 33 7 1022 3000 0 1 15580 1
177 NM NM0110 001 NM0110-001 PUEBLO DE ABIQUIU LIBRARY & CULTURAL CENTER COUNTY RD. #187 BUILDING #29 ABIQUIU 87510 0838 RIO ARRIBA 5056854884 CE NO 400 R_11 0 R_11 1329 R_11 52 R_11 2012 00 00 00 -106.231605 36.156557 35 039 00000 40353 42 4 2205 3503 X 14 21580 1
178 OR OR0072 002 OR0072 SCAPPOOSE PUBLIC LIBRARY 52469 SE 2ND ST SCAPPOOSE 97056 0400 COLUMBIA 5035437123 CE NC 11020 R_11 0 R_11 2190 R_11 52 R_11 2012 00 00 00 -122.876339 45.756527 41 009 65500 49357 32 9709 2004 4101 0 1 38900 0
179 TN TN0132 005 CH001-04 EASTGATE BRANCH LIBRARY 5705 MARLIN ROAD CHATTANOOGA 37411 5508 HAMILTON 4237575310 BR CC 9084 R_11 0 R_11 2340 R_11 52 R_11 2012 00 00 00 -85.211325 35.007946 47 065 14000 340870 12 30 2044 4703 0 1 16860 0
180 UT UT0013 002 CACHCO1501 RICHMOND PUBLIC LIBRARY 38 WEST MAIN STREET RICHMOND 84333 1409 CACHE 4352585525 CE NO 2700 R_11 0 R_11 1565 R_11 52 R_11 2012 00 00 00 -111.809843 41.922642 49 005 63680 114559 41 1.00999999 3061 4901 0 1 30860 0
181 IN IN0123 002 5092 LOGANSPORT-CASS COUNTY PUBLIC LIBRARY 616 EAST BROADWAY LOGANSPORT 46947 3155 CASS 5747536383 CE NO 40448 R_11 0 R_11 3900 R_11 52 R_11 2012 00 00 00 -86.362725 40.754552 18 017 44658 38810 32 9515 2020 1804 0 1 30900 1
182 WV WV0082 002 81 GREENBRIER COUNTY PUBLIC LIBRARY 152 ROBERT W. MCCORMICK DRIVE LEWISBURG 24901 1312 GREENBRIER 3046477568 CE NO 13500 R_11 0 R_11 3068 R_11 52 R_11 2012 00 00 00 -80.448962 37.803713 54 025 46636 35710 33 9506 1041 5403 4 14 0 .
183 ME ME0042 002 43 CARIBOU PUBLIC LIBRARY 30 HIGH STREET CARIBOU 04736 2796 AROOSTOOK 2074934214 CE NO 11000 R_11 0 R_11 2548 R_11 52 R_11 2012 00 00 00 -68.010616 46.860615 23 003 10565 71388 33 9513 3015 2302 0 1 0 .
184 MA MA0091 002 ERVING ERVING PUBLIC LIBRARY 17 MOORE ST. ERVING 01344 9717 FRANKLIN 4134233348 CE NO 1865 R_11 0 R_11 1044 R_11 52 R_11 2012 00 00 00 -72.490752 42.584079 25 011 41410 71646 32 404 2075 2502 0 1 24640 1
185 CA CA0068 026 M664 GEORGE SOUTH MERCED BRANCH 401 LESHER DRIVE MERCED 95340 6572 MERCED 2097253909 BR CC 1200 R_11 0 R_11 1300 R_11 52 R_11 2012 00 00 00 -120.504007 37.293699 06 047 46898 259966 13 15.02999973 1021 0616 0 1 32900 0
186 MI MI0240 012 MI0240-012 NORTH MUSKEGON BRANCH LIBRARY 1522 RUDDIMAN DRIVE NORTH MUSKEGON 49445 3038 MUSKEGON 2317446080 BR NC 3700 R_11 0 R_11 2496 R_11 52 R_11 2012 00 00 00 -86.267321 43.256368 26 121 58640 170021 22 15 2009 2602 0 1 34740 0
187 VA VA0076 002 VA0076-002 SHENANDOAH COUNTY LIBRARY 514 STONEY CREEK BLVD. EDINBURG 22824 9142 SHENANDOAH 5409848200 CE NO 13000 R_11 0 R_11 -1 U_11 -1 U_11 2012 00 00 00 -78.569018 38.825883 51 171 25008 42270 42 406 2037 5106 0 1 0 .
188 NJ NJ0188 002 NJ0188-002 SAYREVILLE FREE PUBLIC LIBRARY 1050 WASHINGTON ROAD PARLIN 08859 1061 MIDDLESEX 2017270212 CE NC 19500 R_11 0 R_11 3172 R_11 52 R_11 2012 00 00 00 -74.315701 40.464356 34 023 65790 816618 21 73.01000214 2000 3406 0 1 35620 0
189 NY NY0251 002 3200482455 ALICE CURTIS DESMOND AND HAMILTON FISH LIBRARY 472 ROUTE 403 GARRISON 10524 9803 PUTNAM 8454243020 CE NC 9467 R_11 0 R_11 2258 R_11 52 R_11 2012 00 00 00 -73.94238 41.375377 36 079 00000 99916 41 108 2025 3618 0 1 35620 0
190 GA GA0004 015 GA0004 GORDON PUBLIC LIBRARY 284 MILLEDGEVILLE ROAD GORDON 31031 0336 WILKINSON 4786285352 BR NO 3385 R_11 0 R_11 2524 R_11 52 R_11 2012 00 00 00 -83.32934 32.882452 13 319 33980 9453 42 9603 3018 1308 0 1 0 .
191 NJ NJ0284 006 1900D SUSSEX-WANTAGE BRANCH 69 ROUTE 639 SUSSEX 07461 2301 SUSSEX 9738753940 BR NC 1400 R_11 0 R_11 -1 U_11 52 R_11 2012 00 00 00 -74.608678 41.210574 34 037 71670 148517 32 3712 1004 3405 4 16 35620 0
192 NE NE0038 002 040C BRUNSWICK PUBLIC LIBRARY 303 FRANKLIN ST. BRUNSWICK 68720 0011 ANTELOPE 4028422105 CE NO 810 R_11 0 R_11 832 R_11 52 R_11 2012 00 00 00 -97.97071 42.292652 31 003 00000 6631 43 9796 2236 3103 0 1 0 .
193 KS KS0155 002 KS0111 GOODLAND PUBLIC LIBRARY 812 BROADWAY GOODLAND 67735 3037 SHERMAN 7858995461 CE NO 13500 R_11 0 R_11 2810 R_11 52 R_11 2012 00 00 00 -101.710437 39.351002 20 181 26875 6039 33 4537 4002 2001 0 1 0 .
194 MI MI0361 019 MI0361-002 WAYNE COUNTY PUBLIC LIBRARY 30555 MICHIGAN AVENUE WESTLAND 48186 5310 WAYNE 7347277310 CE NC 7000 R_11 0 R_11 2172 R_11 52 R_11 2012 00 00 00 -83.340555 42.286454 26 163 86000 1801789 21 5687 4017 2613 0 1 19820 0
195 TX TX0583 002 577 DILLEY PUBLIC LIBRARY 231 W FM 117 DILLEY 78017 3503 FRIO 8309651951 CE NO 2340 R_11 0 R_11 2000 R_11 50 R_11 2012 00 00 00 -99.170073 28.67396 48 163 20428 17367 33 9503 1253 4823 0 1 0 .
196 GA GA0022 026 GA0022 PEACHTREE BRANCH LIBRARY 1315 PEACHTREE STREET, N.E. ATLANTA 30309 7515 FULTON 4048857830 BR CC 10000 R_11 0 R_11 1806 R_11 52 R_11 2012 00 00 00 -84.38501 33.790479 13 121 04000 949580 11 4 1013 1305 0 1 12060 0
197 IN IN0180 003 7531 ELLETTSVILLE BRANCH 600 WEST TEMPERANCE ELLETTSVILLE 47429 1324 MONROE 8123492515 BR NC 12000 R_11 0 R_11 3328 R_11 52 R_11 2012 00 00 00 -86.625077 39.234002 18 105 20800 140063 23 13.02999973 1050 1809 0 1 14020 0
198 WI WI0023 002 WI0023 BELLEVILLE PUBLIC LIBRARY 130 S. VINE ST. BELLEVILLE 53508 0140 DANE 6084241812 CE NC 4600 R_11 0 R_11 2652 R_11 52 R_11 2012 00 00 00 -89.53399 42.858436 55 025 06300 496456 42 126 3121 5502 0 1 31540 0
199 CA CA0146 004 M742 EL RETIRO BRANCH LIBRARY 126 VISTA DEL PARQUE REDONDO BEACH 90277 6112 LOS ANGELES 3103750922 BR NC 4158 R_11 0 R_11 2222 R_11 52 R_11 2012 00 00 00 -118.379754 33.815298 06 037 80000 9889025 12 6513.040039 2005 0633 0 1 31080 0
200 TX TX0099 040 189.360 MCGOVERN-STELLA LINK BRANCH LIBRARY 7405 STELLA LINK RD HOUSTON 77025 M HARRIS 8323932630 BR CC 20393 R_11 0 R_11 2098 R_11 50 R_11 2012 00 00 00 -95.440039 29.698416 48 201 35000 4173695 11 4130 2005 4807 0 1 26420 0

View File

@ -1,134 +0,0 @@
create keyspace PigTest with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options={replication_factor:1};
use PigTest;
create column family SomeApp with
key_validation_class = UTF8Type and
default_validation_class = LexicalUUIDType and
comparator = UTF8Type and
column_metadata =
[
{column_name: name, validation_class: UTF8Type, index_type: KEYS},
{column_name: vote_type, validation_class: UTF8Type},
{column_name: rating, validation_class: Int32Type},
{column_name: score, validation_class: LongType},
{column_name: percent, validation_class: FloatType},
{column_name: atomic_weight, validation_class: DoubleType},
{column_name: created, validation_class: DateType},
];
create column family CopyOfSomeApp with
key_validation_class = UTF8Type and
default_validation_class = LexicalUUIDType and
comparator = UTF8Type and
column_metadata =
[
{column_name: name, validation_class: UTF8Type, index_type: KEYS},
{column_name: vote_type, validation_class: UTF8Type},
{column_name: rating, validation_class: Int32Type},
{column_name: score, validation_class: LongType},
{column_name: percent, validation_class: FloatType},
{column_name: atomic_weight, validation_class: DoubleType},
{column_name: created, validation_class: DateType},
];
set SomeApp['foo']['name'] = 'User Foo';
set SomeApp['foo']['vote_type'] = 'like';
set SomeApp['foo']['rating'] = 8;
set SomeApp['foo']['score'] = 125000;
set SomeApp['foo']['percent'] = '85.0';
set SomeApp['foo']['atomic_weight'] = '2.7182818284590451';
set SomeApp['foo']['created'] = 1335890877;
set SomeApp['bar']['name'] = 'User Bar';
set SomeApp['bar']['vote_type'] = 'like';
set SomeApp['bar']['rating'] = 9;
set SomeApp['bar']['score'] = 15000;
set SomeApp['bar']['percent'] = '35.0';
set SomeApp['bar']['atomic_weight'] = '3.1415926535897931';
set SomeApp['bar']['created'] = 1335890877;
set SomeApp['baz']['name'] = 'User Baz';
set SomeApp['baz']['vote_type'] = 'dislike';
set SomeApp['baz']['rating'] = 3;
set SomeApp['baz']['score'] = 512000;
set SomeApp['baz']['percent'] = '95.3';
set SomeApp['baz']['atomic_weight'] = '1.61803399';
set SomeApp['baz']['created'] = 1335890877;
set SomeApp['baz']['extra1'] = lexicaluuid();
set SomeApp['baz']['extra2'] = lexicaluuid();
set SomeApp['baz']['extra3'] = lexicaluuid();
set SomeApp['qux']['name'] = 'User Qux';
set SomeApp['qux']['vote_type'] = 'dislike';
set SomeApp['qux']['rating'] = 2;
set SomeApp['qux']['score'] = 12000;
set SomeApp['qux']['percent'] = '64.7';
set SomeApp['qux']['atomic_weight'] = '0.660161815846869';
set SomeApp['qux']['created'] = 1335890877;
set SomeApp['qux']['extra1'] = lexicaluuid();
set SomeApp['qux']['extra2'] = lexicaluuid();
set SomeApp['qux']['extra3'] = lexicaluuid();
set SomeApp['qux']['extra4'] = lexicaluuid();
set SomeApp['qux']['extra5'] = lexicaluuid();
set SomeApp['qux']['extra6'] = lexicaluuid();
set SomeApp['qux']['extra7'] = lexicaluuid();
create column family U8 with
key_validation_class = UTF8Type and
comparator = UTF8Type;
create column family Bytes with
key_validation_class = BytesType and
comparator = UTF8Type;
set U8['foo']['x'] = ascii('Z');
set Bytes[ascii('foo')]['x'] = ascii('Z');
create column family CC with
key_validation_class = UTF8Type and
default_validation_class=CounterColumnType
and comparator=UTF8Type;
incr CC['chuck']['kick'];
incr CC['chuck']['kick'];
incr CC['chuck']['kick'];
incr CC['chuck']['fist'];
create column family Compo
with key_validation_class = UTF8Type
and default_validation_class = UTF8Type
and comparator = 'CompositeType(UTF8Type,UTF8Type)';
set Compo['punch']['bruce:lee'] = 'ouch';
set Compo['punch']['bruce:bruce'] = 'hunh?';
set Compo['kick']['bruce:lee'] = 'oww';
set Compo['kick']['bruce:bruce'] = 'watch it, mate';
create column family CompoInt
with key_validation_class = UTF8Type
and default_validation_class = UTF8Type
and comparator = 'CompositeType(LongType,LongType)';
set CompoInt['clock']['1:0'] = 'z';
set CompoInt['clock']['1:30'] = 'zzzz';
set CompoInt['clock']['2:30'] = 'daddy?';
set CompoInt['clock']['6:30'] = 'coffee...';
create column family CompoIntCopy
with key_validation_class = UTF8Type
and default_validation_class = UTF8Type
and comparator = 'CompositeType(LongType,LongType)';
create column family CompoKey
with key_validation_class = 'CompositeType(UTF8Type,LongType)'
and default_validation_class = UTF8Type
and comparator = LongType;
set CompoKey['clock:10']['1'] = 'z';
set CompoKey['clock:20']['1'] = 'zzzz';
set CompoKey['clock:30']['2'] = 'daddy?';
set CompoKey['clock:40']['6'] = 'coffee...';
create column family CompoKeyCopy
with key_validation_class = 'CompositeType(UTF8Type,LongType)'
and default_validation_class = UTF8Type
and comparator = LongType;

View File

@ -1,33 +0,0 @@
CREATE KEYSPACE cql3ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
USE cql3ks;
CREATE TABLE test (a int PRIMARY KEY, b int);
CREATE TABLE moredata (x int PRIMARY KEY, y int);
INSERT INTO test (a,b) VALUES (1,1);
INSERT INTO test (a,b) VALUES (2,2);
INSERT INTO test (a,b) VALUES (3,3);
INSERT INTO moredata (x, y) VALUES (4,4);
INSERT INTO moredata (x, y) VALUES (5,5);
INSERT INTO moredata (x, y) VALUES (6,6);
CREATE TABLE compotable (a int, b int, c text, d text, PRIMARY KEY (a,b,c));
INSERT INTO compotable (a, b , c , d ) VALUES ( 1,1,'One','match');
INSERT INTO compotable (a, b , c , d ) VALUES ( 2,2,'Two','match');
INSERT INTO compotable (a, b , c , d ) VALUES ( 3,3,'Three','match');
INSERT INTO compotable (a, b , c , d ) VALUES ( 4,4,'Four','match');
create table compmore (id int PRIMARY KEY, x int, y int, z text, data text);
INSERT INTO compmore (id, x, y, z,data) VALUES (1,5,6,'Fix','nomatch');
INSERT INTO compmore (id, x, y, z,data) VALUES (2,6,5,'Sive','nomatch');
INSERT INTO compmore (id, x, y, z,data) VALUES (3,7,7,'Seven','match');
INSERT INTO compmore (id, x, y, z,data) VALUES (4,8,8,'Eight','match');
INSERT INTO compmore (id, x, y, z,data) VALUES (5,9,10,'Ninen','nomatch');
CREATE TABLE collectiontable(m text PRIMARY KEY, n map<text, text>);
UPDATE collectiontable SET n['key1'] = 'value1' WHERE m = 'book1';
UPDATE collectiontable SET n['key2'] = 'value2' WHERE m = 'book2';
UPDATE collectiontable SET n['key3'] = 'value3' WHERE m = 'book3';
UPDATE collectiontable SET n['key4'] = 'value4' WHERE m = 'book4';

View File

@ -1,14 +0,0 @@
moretestvalues= LOAD 'cql://cql3ks/moredata/' USING CqlNativeStorage;
insertformat= FOREACH moretestvalues GENERATE TOTUPLE(TOTUPLE('a',x)),TOTUPLE(y);
STORE insertformat INTO 'cql://cql3ks/test?output_query=UPDATE+cql3ks.test+set+b+%3D+%3F' USING CqlNativeStorage;
-- composite key
moredata = load 'cql://cql3ks/compmore' USING CqlNativeStorage;
insertformat = FOREACH moredata GENERATE TOTUPLE (TOTUPLE('a',x),TOTUPLE('b',y), TOTUPLE('c',z)),TOTUPLE(data);
STORE insertformat INTO 'cql://cql3ks/compotable?output_query=UPDATE%20cql3ks.compotable%20SET%20d%20%3D%20%3F' USING CqlNativeStorage;
-- collection column
collectiontable = LOAD 'cql://cql3ks/collectiontable/' USING CqlNativeStorage;
-- recs= (((m,kk)),((map,(m,mm),(n,nn))))
recs= FOREACH collectiontable GENERATE TOTUPLE(TOTUPLE('m', m) ), TOTUPLE(TOTUPLE('map', TOTUPLE('m', 'mm'), TOTUPLE('n', 'nn')));
store recs INTO 'cql://cql3ks/collectiontable?output_query=update+cql3ks.collectiontable+set+n+%3D+%3F' USING CqlNativeStorage();

View File

@ -1,85 +0,0 @@
rows = LOAD 'cassandra://PigTest/SomeApp' USING CassandraStorage();
-- full copy
STORE rows INTO 'cassandra://PigTest/CopyOfSomeApp' USING CassandraStorage();
-- single tuple
onecol = FOREACH rows GENERATE key, percent;
STORE onecol INTO 'cassandra://PigTest/CopyOfSomeApp' USING CassandraStorage();
-- bag only
other = FOREACH rows GENERATE key, columns;
STORE other INTO 'cassandra://PigTest/CopyOfSomeApp' USING CassandraStorage();
-- filter
likes = FILTER rows by vote_type.value eq 'like' and rating.value > 5;
dislikes_extras = FILTER rows by vote_type.value eq 'dislike' AND COUNT(columns) > 0;
-- store these too
STORE likes INTO 'cassandra://PigTest/CopyOfSomeApp' USING CassandraStorage();
STORE dislikes_extras INTO 'cassandra://PigTest/CopyOfSomeApp' USING CassandraStorage();
-- filter to fully visible rows (no uuid columns) and dump
visible = FILTER rows BY COUNT(columns) == 0;
dump visible;
-- test key types with a join
U8 = load 'cassandra://PigTest/U8' using CassandraStorage();
Bytes = load 'cassandra://PigTest/Bytes' using CassandraStorage();
-- cast key to chararray
b = foreach Bytes generate (chararray)key, columns;
-- key in Bytes is a bytearray, U8 chararray
a = join Bytes by key, U8 by key;
dump a
-- key should now be cast into a chararray
c = join b by (chararray)key, U8 by (chararray)key;
dump c
--
-- Test counter column family support
--
CC = load 'cassandra://PigTest/CC' using CassandraStorage();
total_hits = foreach CC generate key, SUM(columns.value);
dump total_hits;
--
-- Test CompositeType
--
compo = load 'cassandra://PigTest/Compo' using CassandraStorage();
compo = foreach compo generate key as method, flatten(columns);
lee = filter compo by columns::name == ('bruce','lee');
dump lee;
night = load 'cassandra://PigTest/CompoInt' using CassandraStorage();
night = foreach night generate flatten(columns);
night = foreach night generate (int)columns::name.$0+(double)columns::name.$1/60 as hour, columns::value as noise;
-- What happens at the darkest hour?
darkest = filter night by hour > 2 and hour < 5;
dump darkest;
compo_int_rows = LOAD 'cassandra://PigTest/CompoInt' USING CassandraStorage();
STORE compo_int_rows INTO 'cassandra://PigTest/CompoIntCopy' USING CassandraStorage();
--
-- Test CompositeKey
--
compokeys = load 'cassandra://PigTest/CompoKey' using CassandraStorage();
compokeys = filter compokeys by key.$1 == 40;
dump compokeys;
compo_key_rows = LOAD 'cassandra://PigTest/CompoKey' USING CassandraStorage();
STORE compo_key_rows INTO 'cassandra://PigTest/CompoKeyCopy' USING CassandraStorage();

File diff suppressed because it is too large Load Diff

View File

@ -1,122 +0,0 @@
package org.apache.cassandra.hadoop.pig;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.util.Date;
import java.util.UUID;
import org.apache.cassandra.db.marshal.*;
import org.apache.cassandra.hadoop.ConfigHelper;
import org.apache.cassandra.serializers.CollectionSerializer;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.UUIDGen;
import org.apache.hadoop.conf.Configuration;
import org.apache.pig.backend.executionengine.ExecException;
import org.apache.pig.data.DataByteArray;
import org.apache.pig.data.DataType;
import org.apache.pig.data.Tuple;
@Deprecated
public class StorageHelper
{
// system environment variables that can be set to configure connection info:
// alternatively, Hadoop JobConf variables can be set using keys from ConfigHelper
public final static String PIG_INPUT_RPC_PORT = "PIG_INPUT_RPC_PORT";
public final static String PIG_INPUT_INITIAL_ADDRESS = "PIG_INPUT_INITIAL_ADDRESS";
public final static String PIG_INPUT_PARTITIONER = "PIG_INPUT_PARTITIONER";
public final static String PIG_OUTPUT_RPC_PORT = "PIG_OUTPUT_RPC_PORT";
public final static String PIG_OUTPUT_INITIAL_ADDRESS = "PIG_OUTPUT_INITIAL_ADDRESS";
public final static String PIG_OUTPUT_PARTITIONER = "PIG_OUTPUT_PARTITIONER";
public final static String PIG_RPC_PORT = "PIG_RPC_PORT";
public final static String PIG_INITIAL_ADDRESS = "PIG_INITIAL_ADDRESS";
public final static String PIG_PARTITIONER = "PIG_PARTITIONER";
public final static String PIG_INPUT_FORMAT = "PIG_INPUT_FORMAT";
public final static String PIG_OUTPUT_FORMAT = "PIG_OUTPUT_FORMAT";
public final static String PIG_INPUT_SPLIT_SIZE = "PIG_INPUT_SPLIT_SIZE";
public final static String PARTITION_FILTER_SIGNATURE = "cassandra.partition.filter";
protected static void setConnectionInformation(Configuration conf)
{
if (System.getenv(PIG_RPC_PORT) != null)
{
ConfigHelper.setInputRpcPort(conf, System.getenv(PIG_RPC_PORT));
ConfigHelper.setOutputRpcPort(conf, System.getenv(PIG_RPC_PORT));
}
if (System.getenv(PIG_INPUT_RPC_PORT) != null)
ConfigHelper.setInputRpcPort(conf, System.getenv(PIG_INPUT_RPC_PORT));
if (System.getenv(PIG_OUTPUT_RPC_PORT) != null)
ConfigHelper.setOutputRpcPort(conf, System.getenv(PIG_OUTPUT_RPC_PORT));
if (System.getenv(PIG_INITIAL_ADDRESS) != null)
{
ConfigHelper.setInputInitialAddress(conf, System.getenv(PIG_INITIAL_ADDRESS));
ConfigHelper.setOutputInitialAddress(conf, System.getenv(PIG_INITIAL_ADDRESS));
}
if (System.getenv(PIG_INPUT_INITIAL_ADDRESS) != null)
ConfigHelper.setInputInitialAddress(conf, System.getenv(PIG_INPUT_INITIAL_ADDRESS));
if (System.getenv(PIG_OUTPUT_INITIAL_ADDRESS) != null)
ConfigHelper.setOutputInitialAddress(conf, System.getenv(PIG_OUTPUT_INITIAL_ADDRESS));
if (System.getenv(PIG_PARTITIONER) != null)
{
ConfigHelper.setInputPartitioner(conf, System.getenv(PIG_PARTITIONER));
ConfigHelper.setOutputPartitioner(conf, System.getenv(PIG_PARTITIONER));
}
if(System.getenv(PIG_INPUT_PARTITIONER) != null)
ConfigHelper.setInputPartitioner(conf, System.getenv(PIG_INPUT_PARTITIONER));
if(System.getenv(PIG_OUTPUT_PARTITIONER) != null)
ConfigHelper.setOutputPartitioner(conf, System.getenv(PIG_OUTPUT_PARTITIONER));
}
protected static Object cassandraToObj(AbstractType validator, ByteBuffer value, int nativeProtocolVersion)
{
if (validator instanceof DecimalType || validator instanceof InetAddressType)
return validator.getString(value);
if (validator instanceof CollectionType)
{
// For CollectionType, the compose() method assumes the v3 protocol format of collection, which
// is not correct here since we query using the CQL-over-thrift interface which use the pre-v3 format
return ((CollectionSerializer)validator.getSerializer()).deserializeForNativeProtocol(value, nativeProtocolVersion);
}
return validator.compose(value);
}
/** set the value to the position of the tuple */
protected static void setTupleValue(Tuple pair, int position, Object value) throws ExecException
{
if (value instanceof BigInteger)
pair.set(position, ((BigInteger) value).intValue());
else if (value instanceof ByteBuffer)
pair.set(position, new DataByteArray(ByteBufferUtil.getArray((ByteBuffer) value)));
else if (value instanceof UUID)
pair.set(position, new DataByteArray(UUIDGen.decompose((java.util.UUID) value)));
else if (value instanceof Date)
pair.set(position, TimestampType.instance.decompose((Date) value).getLong());
else
pair.set(position, value);
}
/** get pig type for the cassandra data type*/
protected static byte getPigType(AbstractType type)
{
if (type instanceof LongType || type instanceof DateType || type instanceof TimestampType) // DateType is bad and it should feel bad
return DataType.LONG;
else if (type instanceof IntegerType || type instanceof Int32Type) // IntegerType will overflow at 2**31, but is kept for compatibility until pig has a BigInteger
return DataType.INTEGER;
else if (type instanceof AsciiType || type instanceof UTF8Type || type instanceof DecimalType || type instanceof InetAddressType)
return DataType.CHARARRAY;
else if (type instanceof FloatType)
return DataType.FLOAT;
else if (type instanceof DoubleType)
return DataType.DOUBLE;
else if (type instanceof AbstractCompositeType || type instanceof CollectionType)
return DataType.TUPLE;
return DataType.BYTEARRAY;
}
}

View File

@ -1,42 +0,0 @@
#
# Warning!
# Consider the effects on 'o.a.c.i.s.LegacySSTableTest' before changing schemas in this file.
#
cluster_name: Test Cluster
memtable_allocation_type: heap_buffers
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_segment_size_in_mb: 5
commitlog_directory: build/test/cassandra/commitlog
hints_directory: build/test/cassandra/hints
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
listen_address: 127.0.0.1
storage_port: 7010
rpc_port: 9170
start_native_transport: true
native_transport_port: 9042
column_index_size_in_kb: 4
saved_caches_directory: build/test/cassandra/saved_caches
data_file_directories:
- build/test/cassandra/data
disk_access_mode: mmap
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "127.0.0.1"
endpoint_snitch: org.apache.cassandra.locator.SimpleSnitch
dynamic_snitch: true
request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler
request_scheduler_id: keyspace
server_encryption_options:
internode_encryption: none
keystore: conf/.keystore
keystore_password: cassandra
truststore: conf/.truststore
truststore_password: cassandra
incremental_backups: true
concurrent_compactors: 4
compaction_throughput_mb_per_sec: 0
row_cache_class_name: org.apache.cassandra.cache.OHCProvider
row_cache_size_in_mb: 16
enable_user_defined_functions: true

View File

@ -1,150 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import java.util.Iterator;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.pig.data.Tuple;
import org.apache.thrift.TException;
public class CqlRecordReaderTest extends PigTestBase
{
private static String[] statements = {
"DROP KEYSPACE IF EXISTS cql3ks",
"CREATE KEYSPACE cql3ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};",
"USE cql3ks;",
"CREATE TABLE cqltable (" +
"pk1 int," +
"pk2 int," +
"pk3 int," +
"ck1 int," +
"ck2 int," +
"data text," +
"primary key((pk1,pk2,pk3),ck1,ck2));",
"INSERT INTO cqltable(pk1, pk2, pk3, ck1, ck2, data) VALUES (11, 12, 13, 14, 15, 'value1');",
"CREATE TABLE \"MixedCaseCqlTable\" (" +
"pk1 int," +
"\"PK2\" int," +
"pk3 int," +
"\"CK1\" int," +
"ck2 int," +
"data text," +
"primary key((pk1,\"PK2\",pk3),\"CK1\",ck2));",
"INSERT INTO \"MixedCaseCqlTable\"(pk1, \"PK2\", pk3, \"CK1\", ck2, data) VALUES (11, 12, 13, 14, 15, 'value1');",
};
@BeforeClass
public static void setup() throws IOException, ConfigurationException, TException
{
startCassandra();
executeCQLStatements(statements);
startHadoopCluster();
}
@Test
public void defaultCqlQueryTest() throws Exception
{
String initialQuery = "rows = LOAD 'cql://cql3ks/cqltable?" + defaultParameters + nativeParameters + "' USING CqlNativeStorage();";
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 11);
Assert.assertEquals(t.get(1), 12);
Assert.assertEquals(t.get(2), 13);
Assert.assertEquals(t.get(3), 14);
Assert.assertEquals(t.get(4), 15);
Assert.assertEquals(t.get(5), "value1");
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void defaultMixedCaseCqlQueryTest() throws Exception
{
String initialQuery = "rows = LOAD 'cql://cql3ks/MixedCaseCqlTable?" + defaultParameters + nativeParameters + "' USING CqlNativeStorage();";
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 11);
Assert.assertEquals(t.get(1), 12);
Assert.assertEquals(t.get(2), 13);
Assert.assertEquals(t.get(3), 14);
Assert.assertEquals(t.get(4), 15);
Assert.assertEquals(t.get(5), "value1");
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void selectColumnsTest() throws Exception
{
String initialQuery = "rows = LOAD 'cql://cql3ks/cqltable?" + defaultParameters + nativeParameters + "&columns=ck1%2Cck2%2Cdata' USING CqlNativeStorage();";
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 11);
Assert.assertEquals(t.get(1), 12);
Assert.assertEquals(t.get(2), 13);
Assert.assertEquals(t.get(3), 14);
Assert.assertEquals(t.get(4), 15);
Assert.assertEquals(t.get(5), "value1");
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void whereClauseTest() throws Exception
{
String initialQuery = "rows = LOAD 'cql://cql3ks/cqltable?" + defaultParameters + nativeParameters + "&where_clause=ck1%3d14' USING CqlNativeStorage();";
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 11);
Assert.assertEquals(t.get(1), 12);
Assert.assertEquals(t.get(2), 13);
Assert.assertEquals(t.get(3), 14);
Assert.assertEquals(t.get(4), 15);
Assert.assertEquals(t.get(5), "value1");
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
}

View File

@ -1,479 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import java.util.Iterator;
import org.apache.cassandra.db.marshal.TimeUUIDType;
import org.apache.cassandra.db.marshal.UUIDType;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.utils.Hex;
import org.apache.pig.data.DataByteArray;
import org.apache.pig.data.Tuple;
import org.apache.thrift.TException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class CqlTableDataTypeTest extends PigTestBase
{
//ASCII (AsciiType.instance),
//BIGINT (LongType.instance),
//BLOB (BytesType.instance),
//BOOLEAN (BooleanType.instance),
//COUNTER (CounterColumnType.instance),
//DECIMAL (DecimalType.instance),
//DOUBLE (DoubleType.instance),
//FLOAT (FloatType.instance),
//INET (InetAddressType.instance),
//INT (Int32Type.instance),
//TEXT (UTF8Type.instance),
//TIMESTAMP(DateType.instance),
//UUID (UUIDType.instance),
//VARCHAR (UTF8Type.instance),
//VARINT (IntegerType.instance),
//TIMEUUID (TimeUUIDType.instance);
//SET
//LIST
//MAP
//Create table to test the above data types
private static String[] statements = {
"DROP KEYSPACE IF EXISTS cql3ks",
"CREATE KEYSPACE cql3ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}",
"USE cql3ks;",
"CREATE TABLE cqltable (" +
"key int primary key," +
"col_ascii ascii," +
"col_bigint bigint," +
"col_blob blob," +
"col_boolean boolean," +
"col_decimal decimal," +
"col_double double," +
"col_float float," +
"col_inet inet," +
"col_int int," +
"col_text text," +
"col_timestamp timestamp," +
"col_uuid uuid," +
"col_varchar varchar," +
"col_varint varint," +
"col_timeuuid timeuuid);",
"CREATE TABLE settable (" +
"key int primary key," +
"col_set_ascii set<ascii>," +
"col_set_bigint set<bigint>," +
"col_set_blob set<blob>," +
"col_set_boolean set<boolean>," +
"col_set_decimal set<decimal>," +
"col_set_double set<double>," +
"col_set_float set<float>," +
"col_set_inet set<inet>," +
"col_set_int set<int>," +
"col_set_text set<text>," +
"col_set_timestamp set<timestamp>," +
"col_set_uuid set<uuid>," +
"col_set_varchar set<varchar>," +
"col_set_varint set<varint>," +
"col_set_timeuuid set<timeuuid>);",
"CREATE TABLE listtable (" +
"key int primary key," +
"col_list_ascii list<ascii>," +
"col_list_bigint list<bigint>," +
"col_list_blob list<blob>," +
"col_list_boolean list<boolean>," +
"col_list_decimal list<decimal>," +
"col_list_double list<double>," +
"col_list_float list<float>," +
"col_list_inet list<inet>," +
"col_list_int list<int>," +
"col_list_text list<text>," +
"col_list_timestamp list<timestamp>," +
"col_list_uuid list<uuid>," +
"col_list_varchar list<varchar>," +
"col_list_varint list<varint>," +
"col_list_timeuuid list<timeuuid>);",
"CREATE TABLE maptable (" +
"key int primary key," +
"col_map_ascii map<ascii, ascii>," +
"col_map_bigint map<bigint, bigint>," +
"col_map_blob map<blob, blob>," +
"col_map_boolean map<boolean, boolean>," +
"col_map_decimal map<decimal, decimal>," +
"col_map_double map<double, double>," +
"col_map_float map<float, float>," +
"col_map_inet map<inet, inet>," +
"col_map_int map<int, int>," +
"col_map_text map<text, text>," +
"col_map_timestamp map<timestamp, timestamp>," +
"col_map_uuid map<uuid, uuid>," +
"col_map_varchar map<varchar, varchar>," +
"col_map_varint map<varint, varint>," +
"col_map_timeuuid map<timeuuid, timeuuid>);",
"INSERT INTO cqltable(key, col_ascii) VALUES (1, 'ascii');",
"INSERT INTO cqltable(key, col_bigint) VALUES (1, 12345678);",
"INSERT INTO cqltable(key, col_blob) VALUES (1, 0x23446c6c6f);",
"INSERT INTO cqltable(key, col_boolean) VALUES (1, false);",
"INSERT INTO cqltable(key, col_decimal) VALUES (1, 23.4567);",
"INSERT INTO cqltable(key, col_double) VALUES (1, 12345678.12345678);",
"INSERT INTO cqltable(key, col_float) VALUES (1, 123.12);",
"INSERT INTO cqltable(key, col_inet) VALUES (1, '127.0.0.1');",
"INSERT INTO cqltable(key, col_int) VALUES (1, 123);",
"INSERT INTO cqltable(key, col_text) VALUES (1, 'text');",
"INSERT INTO cqltable(key, col_timestamp) VALUES (1, '2011-02-03T04:05:00+0000');",
"INSERT INTO cqltable(key, col_timeuuid) VALUES (1, maxTimeuuid('2013-01-01 00:05+0000'));",
"INSERT INTO cqltable(key, col_uuid) VALUES (1, 550e8400-e29b-41d4-a716-446655440000);",
"INSERT INTO cqltable(key, col_varchar) VALUES (1, 'varchar');",
"INSERT INTO cqltable(key, col_varint) VALUES (1, 123);",
"INSERT INTO settable(key, col_set_ascii) VALUES (1, {'ascii1', 'ascii2'});",
"INSERT INTO settable(key, col_set_bigint) VALUES (1, {12345678, 12345679});",
"INSERT INTO settable(key, col_set_blob) VALUES (1, {0x68656c6c6f, 0x68656c6c6e});",
"INSERT INTO settable(key, col_set_boolean) VALUES (1, {false, true});",
"INSERT INTO settable(key, col_set_decimal) VALUES (1, {23.4567, 23.4568});",
"INSERT INTO settable(key, col_set_double) VALUES (1, {12345678.12345678, 12345678.12345679});",
"INSERT INTO settable(key, col_set_float) VALUES (1, {123.12, 123.13});",
"INSERT INTO settable(key, col_set_inet) VALUES (1, {'127.0.0.1', '127.0.0.2'});",
"INSERT INTO settable(key, col_set_int) VALUES (1, {123, 124});",
"INSERT INTO settable(key, col_set_text) VALUES (1, {'text1', 'text2'});",
"INSERT INTO settable(key, col_set_timestamp) VALUES (1, {'2011-02-03T04:05:00+0000', '2011-02-04T04:05:00+0000'});",
"INSERT INTO settable(key, col_set_timeuuid) VALUES (1, {e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f, e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77});",
"INSERT INTO settable(key, col_set_uuid) VALUES (1, {550e8400-e29b-41d4-a716-446655440000, 550e8400-e29b-41d4-a716-446655440001});",
"INSERT INTO settable(key, col_set_varchar) VALUES (1, {'varchar1', 'varchar2'});",
"INSERT INTO settable(key, col_set_varint) VALUES (1, {123, 124});",
"INSERT INTO listtable(key, col_list_ascii) VALUES (1, ['ascii2', 'ascii1']);",
"INSERT INTO listtable(key, col_list_bigint) VALUES (1, [12345679, 12345678]);",
"INSERT INTO listtable(key, col_list_blob) VALUES (1, [0x68656c6c6e, 0x68656c6c6f]);",
"INSERT INTO listtable(key, col_list_boolean) VALUES (1, [true, false]);",
"INSERT INTO listtable(key, col_list_decimal) VALUES (1, [23.4568, 23.4567]);",
"INSERT INTO listtable(key, col_list_double) VALUES (1, [12345678.12345679, 12345678.12345678]);",
"INSERT INTO listtable(key, col_list_float) VALUES (1, [123.13, 123.12]);",
"INSERT INTO listtable(key, col_list_inet) VALUES (1, ['127.0.0.2', '127.0.0.1']);",
"INSERT INTO listtable(key, col_list_int) VALUES (1, [124, 123]);",
"INSERT INTO listtable(key, col_list_text) VALUES (1, ['text2', 'text1']);",
"INSERT INTO listtable(key, col_list_timestamp) VALUES (1, ['2011-02-04T04:05:00+0000', '2011-02-03T04:05:00+0000']);",
"INSERT INTO listtable(key, col_list_timeuuid) VALUES (1, [e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77, e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f]);",
"INSERT INTO listtable(key, col_list_uuid) VALUES (1, [550e8400-e29b-41d4-a716-446655440001, 550e8400-e29b-41d4-a716-446655440000]);",
"INSERT INTO listtable(key, col_list_varchar) VALUES (1, ['varchar2', 'varchar1']);",
"INSERT INTO listtable(key, col_list_varint) VALUES (1, [124, 123]);",
"INSERT INTO maptable(key, col_map_ascii) VALUES (1, {'ascii1' : 'ascii2'});",
"INSERT INTO maptable(key, col_map_bigint) VALUES (1, {12345678 : 12345679});",
"INSERT INTO maptable(key, col_map_blob) VALUES (1, {0x68656c6c6f : 0x68656c6c6e});",
"INSERT INTO maptable(key, col_map_boolean) VALUES (1, {false : true});",
"INSERT INTO maptable(key, col_map_decimal) VALUES (1, {23.4567 : 23.4568});",
"INSERT INTO maptable(key, col_map_double) VALUES (1, {12345678.12345678 : 12345678.12345679});",
"INSERT INTO maptable(key, col_map_float) VALUES (1, {123.12 : 123.13});",
"INSERT INTO maptable(key, col_map_inet) VALUES (1, {'127.0.0.1' : '127.0.0.2'});",
"INSERT INTO maptable(key, col_map_int) VALUES (1, {123 : 124});",
"INSERT INTO maptable(key, col_map_text) VALUES (1, {'text1' : 'text2'});",
"INSERT INTO maptable(key, col_map_timestamp) VALUES (1, {'2011-02-03T04:05:00+0000' : '2011-02-04T04:05:00+0000'});",
"INSERT INTO maptable(key, col_map_timeuuid) VALUES (1, {e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f : e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77});",
"INSERT INTO maptable(key, col_map_uuid) VALUES (1, {550e8400-e29b-41d4-a716-446655440000 : 550e8400-e29b-41d4-a716-446655440001});",
"INSERT INTO maptable(key, col_map_varchar) VALUES (1, {'varchar1' : 'varchar2'});",
"INSERT INTO maptable(key, col_map_varint) VALUES (1, {123 : 124});",
"CREATE TABLE countertable (key int primary key, col_counter counter);",
"UPDATE countertable SET col_counter = col_counter + 3 WHERE key = 1;",
};
@BeforeClass
public static void setup() throws IOException, ConfigurationException, TException
{
startCassandra();
executeCQLStatements(statements);
startHadoopCluster();
}
@Test
public void testCqlNativeStorageRegularType() throws IOException
{
//input_cql=select * from cqltable where token(key) > ? and token(key) <= ?
cqlTableTest("rows = LOAD 'cql://cql3ks/cqltable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20cqltable%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
//input_cql=select * from countertable where token(key) > ? and token(key) <= ?
counterTableTest("cc_rows = LOAD 'cql://cql3ks/countertable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20countertable%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void cqlTableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
//{key: int,
//col_ascii: chararray,
//col_bigint: long,
//col_blob: bytearray,
//col_boolean: bytearray,
//col_decimal: chararray,
//col_double: double,
//col_float: float,
//col_inet: chararray,
//col_int: int,
//col_text: chararray,
//col_timestamp: long,
//col_timeuuid: bytearray,
//col_uuid: chararray,
//col_varchar: chararray,
//col_varint: int}
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 1);
Assert.assertEquals(t.get(1), "ascii");
Assert.assertEquals(t.get(2), 12345678L);
Assert.assertEquals(t.get(3), new DataByteArray(Hex.hexToBytes("23446c6c6f")));
Assert.assertEquals(t.get(4), false);
Assert.assertEquals(t.get(5), "23.4567");
Assert.assertEquals(t.get(6), 12345678.12345678d);
Assert.assertEquals(t.get(7), 123.12f);
Assert.assertEquals(t.get(8), "127.0.0.1");
Assert.assertEquals(t.get(9), 123);
Assert.assertEquals(t.get(10), "text");
Assert.assertEquals(t.get(11), 1296705900000L);
Assert.assertEquals(t.get(12), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f").array())));
Assert.assertEquals(t.get(13), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440000").array())));
Assert.assertEquals(t.get(14), "varchar");
Assert.assertEquals(t.get(15), 123);
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
private void counterTableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("cc_rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 1);
Assert.assertEquals(t.get(1), 3L);
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void testCqlNativeStorageSetType() throws IOException
{
//input_cql=select * from settable where token(key) > ? and token(key) <= ?
settableTest("set_rows = LOAD 'cql://cql3ks/settable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20settable%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void settableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("set_rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 1);
Tuple innerTuple = (Tuple) t.get(1);
Assert.assertEquals(innerTuple.get(0), "ascii1");
Assert.assertEquals(innerTuple.get(1), "ascii2");
innerTuple = (Tuple) t.get(2);
Assert.assertEquals(innerTuple.get(0), 12345678L);
Assert.assertEquals(innerTuple.get(1), 12345679L);
innerTuple = (Tuple) t.get(3);
Assert.assertEquals(innerTuple.get(0), new DataByteArray(Hex.hexToBytes("68656c6c6e")));
Assert.assertEquals(innerTuple.get(1), new DataByteArray(Hex.hexToBytes("68656c6c6f")));
innerTuple = (Tuple) t.get(4);
Assert.assertEquals(innerTuple.get(0), false);
Assert.assertEquals(innerTuple.get(1), true);
innerTuple = (Tuple) t.get(5);
Assert.assertEquals(innerTuple.get(0), "23.4567");
Assert.assertEquals(innerTuple.get(1), "23.4568");
innerTuple = (Tuple) t.get(6);
Assert.assertEquals(innerTuple.get(0), 12345678.12345678d);
Assert.assertEquals(innerTuple.get(1), 12345678.12345679d);
innerTuple = (Tuple) t.get(7);
Assert.assertEquals(innerTuple.get(0), 123.12f);
Assert.assertEquals(innerTuple.get(1), 123.13f);
innerTuple = (Tuple) t.get(8);
Assert.assertEquals(innerTuple.get(0), "127.0.0.1");
Assert.assertEquals(innerTuple.get(1), "127.0.0.2");
innerTuple = (Tuple) t.get(9);
Assert.assertEquals(innerTuple.get(0), 123);
Assert.assertEquals(innerTuple.get(1), 124);
innerTuple = (Tuple) t.get(10);
Assert.assertEquals(innerTuple.get(0), "text1");
Assert.assertEquals(innerTuple.get(1), "text2");
innerTuple = (Tuple) t.get(11);
Assert.assertEquals(innerTuple.get(0), 1296705900000L);
Assert.assertEquals(innerTuple.get(1), 1296792300000L);
innerTuple = (Tuple) t.get(12);
Assert.assertEquals(innerTuple.get(0), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77").array())));
Assert.assertEquals(innerTuple.get(1), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f").array())));
innerTuple = (Tuple) t.get(13);
Assert.assertEquals(innerTuple.get(0), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440000").array())));
Assert.assertEquals(innerTuple.get(1), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440001").array())));
innerTuple = (Tuple) t.get(14);
Assert.assertEquals(innerTuple.get(0), "varchar1");
Assert.assertEquals(innerTuple.get(1), "varchar2");
innerTuple = (Tuple) t.get(15);
Assert.assertEquals(innerTuple.get(0), 123);
Assert.assertEquals(innerTuple.get(1), 124);
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void testCqlNativeStorageListType() throws IOException
{
//input_cql=select * from listtable where token(key) > ? and token(key) <= ?
listtableTest("list_rows = LOAD 'cql://cql3ks/listtable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20listtable%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void listtableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("list_rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 1);
Tuple innerTuple = (Tuple) t.get(1);
Assert.assertEquals(innerTuple.get(1), "ascii1");
Assert.assertEquals(innerTuple.get(0), "ascii2");
innerTuple = (Tuple) t.get(2);
Assert.assertEquals(innerTuple.get(1), 12345678L);
Assert.assertEquals(innerTuple.get(0), 12345679L);
innerTuple = (Tuple) t.get(3);
Assert.assertEquals(innerTuple.get(1), new DataByteArray(Hex.hexToBytes("68656c6c6f")));
Assert.assertEquals(innerTuple.get(0), new DataByteArray(Hex.hexToBytes("68656c6c6e")));
innerTuple = (Tuple) t.get(4);
Assert.assertEquals(innerTuple.get(1), false);
Assert.assertEquals(innerTuple.get(0), true);
innerTuple = (Tuple) t.get(5);
Assert.assertEquals(innerTuple.get(1), "23.4567");
Assert.assertEquals(innerTuple.get(0), "23.4568");
innerTuple = (Tuple) t.get(6);
Assert.assertEquals(innerTuple.get(1), 12345678.12345678d);
Assert.assertEquals(innerTuple.get(0), 12345678.12345679d);
innerTuple = (Tuple) t.get(7);
Assert.assertEquals(innerTuple.get(1), 123.12f);
Assert.assertEquals(innerTuple.get(0), 123.13f);
innerTuple = (Tuple) t.get(8);
Assert.assertEquals(innerTuple.get(1), "127.0.0.1");
Assert.assertEquals(innerTuple.get(0), "127.0.0.2");
innerTuple = (Tuple) t.get(9);
Assert.assertEquals(innerTuple.get(1), 123);
Assert.assertEquals(innerTuple.get(0), 124);
innerTuple = (Tuple) t.get(10);
Assert.assertEquals(innerTuple.get(1), "text1");
Assert.assertEquals(innerTuple.get(0), "text2");
innerTuple = (Tuple) t.get(11);
Assert.assertEquals(innerTuple.get(1), 1296705900000L);
Assert.assertEquals(innerTuple.get(0), 1296792300000L);
innerTuple = (Tuple) t.get(12);
Assert.assertEquals(innerTuple.get(1), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f").array())));
Assert.assertEquals(innerTuple.get(0), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77").array())));
innerTuple = (Tuple) t.get(13);
Assert.assertEquals(innerTuple.get(1), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440000").array())));
Assert.assertEquals(innerTuple.get(0), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440001").array())));
innerTuple = (Tuple) t.get(14);
Assert.assertEquals(innerTuple.get(1), "varchar1");
Assert.assertEquals(innerTuple.get(0), "varchar2");
innerTuple = (Tuple) t.get(15);
Assert.assertEquals(innerTuple.get(1), 123);
Assert.assertEquals(innerTuple.get(0), 124);
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void testCqlNativeStorageMapType() throws IOException
{
//input_cql=select * from maptable where token(key) > ? and token(key) <= ?
maptableTest("map_rows = LOAD 'cql://cql3ks/maptable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20maptable%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void maptableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("map_rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 1);
Tuple innerTuple = (Tuple) ((Tuple) t.get(1)).get(0);
Assert.assertEquals(innerTuple.get(0), "ascii1");
Assert.assertEquals(innerTuple.get(1), "ascii2");
innerTuple = (Tuple) ((Tuple) t.get(2)).get(0);
Assert.assertEquals(innerTuple.get(0), 12345678L);
Assert.assertEquals(innerTuple.get(1), 12345679L);
innerTuple = (Tuple) ((Tuple) t.get(3)).get(0);
Assert.assertEquals(innerTuple.get(0), new DataByteArray(Hex.hexToBytes("68656c6c6f")));
Assert.assertEquals(innerTuple.get(1), new DataByteArray(Hex.hexToBytes("68656c6c6e")));
innerTuple = (Tuple) ((Tuple) t.get(4)).get(0);
Assert.assertEquals(innerTuple.get(0), false);
Assert.assertEquals(innerTuple.get(1), true);
innerTuple = (Tuple) ((Tuple) t.get(5)).get(0);
Assert.assertEquals(innerTuple.get(0), "23.4567");
Assert.assertEquals(innerTuple.get(1), "23.4568");
innerTuple = (Tuple) ((Tuple) t.get(6)).get(0);
Assert.assertEquals(innerTuple.get(0), 12345678.12345678d);
Assert.assertEquals(innerTuple.get(1), 12345678.12345679d);
innerTuple = (Tuple) ((Tuple) t.get(7)).get(0);
Assert.assertEquals(innerTuple.get(0), 123.12f);
Assert.assertEquals(innerTuple.get(1), 123.13f);
innerTuple = (Tuple) ((Tuple) t.get(8)).get(0);
Assert.assertEquals(innerTuple.get(0), "127.0.0.1");
Assert.assertEquals(innerTuple.get(1), "127.0.0.2");
innerTuple = (Tuple) ((Tuple) t.get(9)).get(0);
Assert.assertEquals(innerTuple.get(0), 123);
Assert.assertEquals(innerTuple.get(1), 124);
innerTuple = (Tuple) ((Tuple) t.get(10)).get(0);
Assert.assertEquals(innerTuple.get(0), "text1");
Assert.assertEquals(innerTuple.get(1), "text2");
innerTuple = (Tuple) ((Tuple) t.get(11)).get(0);
Assert.assertEquals(innerTuple.get(0), 1296705900000L);
Assert.assertEquals(innerTuple.get(1), 1296792300000L);
innerTuple = (Tuple) ((Tuple) t.get(12)).get(0);
Assert.assertEquals(innerTuple.get(0), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f").array())));
Assert.assertEquals(innerTuple.get(1), new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f77").array())));
innerTuple = (Tuple) ((Tuple) t.get(13)).get(0);
Assert.assertEquals(innerTuple.get(0), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440000").array())));
Assert.assertEquals(innerTuple.get(1), new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440001").array())));
innerTuple = (Tuple) ((Tuple) t.get(14)).get(0);
Assert.assertEquals(innerTuple.get(0), "varchar1");
Assert.assertEquals(innerTuple.get(1), "varchar2");
innerTuple = (Tuple) ((Tuple) t.get(15)).get(0);
Assert.assertEquals(innerTuple.get(0), 123);
Assert.assertEquals(innerTuple.get(1), 124);
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
}

View File

@ -1,303 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import java.util.Iterator;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.pig.data.Tuple;
import org.apache.thrift.TException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class CqlTableTest extends PigTestBase
{
private static String[] statements = {
"DROP KEYSPACE IF EXISTS cql3ks",
"CREATE KEYSPACE cql3ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}",
"USE cql3ks;",
"CREATE TABLE cqltable (key1 text, key2 int, column1 int, column2 float, primary key(key1, key2))",
"INSERT INTO cqltable (key1, key2, column1, column2) values ('key1', 111, 100, 10.1)",
"CREATE TABLE compactcqltable (key1 text, column1 int, column2 float, primary key(key1)) WITH COMPACT STORAGE",
"INSERT INTO compactcqltable (key1, column1, column2) values ('key1', 100, 10.1)",
"CREATE TABLE test (a int PRIMARY KEY, b int);",
"CREATE INDEX test_b on test (b);",
"CREATE TABLE moredata (x int PRIMARY KEY, y int);",
"CREATE TABLE test_bulk (a int PRIMARY KEY, b int);",
"INSERT INTO test_bulk (a,b) VALUES (1,1);",
"INSERT INTO test_bulk (a,b) VALUES (2,2);",
"INSERT INTO test_bulk (a,b) VALUES (3,3);",
"INSERT INTO test (a,b) VALUES (1,1);",
"INSERT INTO test (a,b) VALUES (2,2);",
"INSERT INTO test (a,b) VALUES (3,3);",
"INSERT INTO moredata (x, y) VALUES (4,4);",
"INSERT INTO moredata (x, y) VALUES (5,5);",
"INSERT INTO moredata (x, y) VALUES (6,6);",
"CREATE TABLE compotable (a int, b int, c text, d text, PRIMARY KEY (a,b,c));",
"INSERT INTO compotable (a, b , c , d ) VALUES ( 1,1,'One','match');",
"INSERT INTO compotable (a, b , c , d ) VALUES ( 2,2,'Two','match');",
"INSERT INTO compotable (a, b , c , d ) VALUES ( 3,3,'Three','match');",
"INSERT INTO compotable (a, b , c , d ) VALUES ( 4,4,'Four','match');",
"create table compmore (id int PRIMARY KEY, x int, y int, z text, data text);",
"INSERT INTO compmore (id, x, y, z,data) VALUES (1,5,6,'Fix','nomatch');",
"INSERT INTO compmore (id, x, y, z,data) VALUES (2,6,5,'Sive','nomatch');",
"INSERT INTO compmore (id, x, y, z,data) VALUES (3,7,7,'Seven','match');",
"INSERT INTO compmore (id, x, y, z,data) VALUES (4,8,8,'Eight','match');",
"INSERT INTO compmore (id, x, y, z,data) VALUES (5,9,10,'Ninen','nomatch');",
"CREATE TABLE collectiontable(m text PRIMARY KEY, n map<text, text>);",
"UPDATE collectiontable SET n['key1'] = 'value1' WHERE m = 'book1';",
"UPDATE collectiontable SET n['key2'] = 'value2' WHERE m = 'book2';",
"UPDATE collectiontable SET n['key3'] = 'value3' WHERE m = 'book3';",
"UPDATE collectiontable SET n['key4'] = 'value4' WHERE m = 'book4';",
"CREATE TABLE nulltable(m text PRIMARY KEY, n map<text, text>);",
"UPDATE nulltable SET n['key1'] = 'value1' WHERE m = 'book1';",
"UPDATE nulltable SET n['key2'] = 'value2' WHERE m = 'book2';",
"UPDATE nulltable SET n['key3'] = 'value3' WHERE m = 'book3';",
"UPDATE nulltable SET n['key4'] = 'value4' WHERE m = 'book4';",
};
@BeforeClass
public static void setup() throws IOException, ConfigurationException, TException
{
startCassandra();
executeCQLStatements(statements);
startHadoopCluster();
}
@Test
public void testCqlNativeStorageSchema() throws IOException
{
//input_cql=select * from cqltable where token(key1) > ? and token(key1) <= ?
cqlTableSchemaTest("rows = LOAD 'cql://cql3ks/cqltable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20cqltable%20where%20token(key1)%20%3E%20%3F%20and%20token(key1)%20%3C%3D%20%3F' USING CqlNativeStorage();");
//input_cql=select * from compactcqltable where token(key1) > ? and token(key1) <= ?
compactCqlTableSchemaTest("rows = LOAD 'cql://cql3ks/compactcqltable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compactcqltable%20where%20token(key1)%20%3E%20%3F%20and%20token(key1)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void compactCqlTableSchemaTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0).toString(), "key1");
Assert.assertEquals(t.get(1), 100);
Assert.assertEquals(t.get(2), 10.1f);
Assert.assertEquals(3, t.size());
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
private void cqlTableSchemaTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0).toString(), "key1");
Assert.assertEquals(t.get(1), 111);
Assert.assertEquals(t.get(2), 100);
Assert.assertEquals(t.get(3), 10.1f);
Assert.assertEquals(4, t.size());
}
else
{
Assert.fail("Failed to get data for query " + initialQuery);
}
}
@Test
public void testCqlNativeStorageSingleKeyTable() throws IOException
{
//input_cql=select * from moredata where token(x) > ? and token(x) <= ?
singleKeyTableTest("moretestvalues= LOAD 'cql://cql3ks/moredata?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20moredata%20where%20token(x)%20%3E%20%3F%20and%20token(x)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void singleKeyTableTest(String initialQuery) throws IOException
{
pig.setBatchOn();
pig.registerQuery(initialQuery);
pig.registerQuery("insertformat= FOREACH moretestvalues GENERATE TOTUPLE(TOTUPLE('a',x)),TOTUPLE(y);");
pig.registerQuery("STORE insertformat INTO 'cql://cql3ks/test?" + defaultParameters + nativeParameters + "&output_query=UPDATE+cql3ks.test+set+b+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
//(5,5)
//(6,6)
//(4,4)
//(2,2)
//(3,3)
//(1,1)
//input_cql=select * from test where token(a) > ? and token(a) <= ?
pig.registerQuery("result= LOAD 'cql://cql3ks/test?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20test%20where%20token(a)%20%3E%20%3F%20and%20token(a)%20%3C%3D%20%3F' USING CqlNativeStorage();");
Iterator<Tuple> it = pig.openIterator("result");
int count = 0;
while (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), t.get(1));
count ++;
}
Assert.assertEquals(6, count);
}
@Test
public void testCqlNativeStorageCompositeKeyTable() throws IOException
{
//input_cql=select * from compmore where token(id) > ? and token(id) <= ?
compositeKeyTableTest("moredata= LOAD 'cql://cql3ks/compmore?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compmore%20where%20token(id)%20%3E%20%3F%20and%20token(id)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void compositeKeyTableTest(String initialQuery) throws IOException
{
pig.setBatchOn();
pig.registerQuery(initialQuery);
pig.registerQuery("insertformat = FOREACH moredata GENERATE TOTUPLE (TOTUPLE('a',x),TOTUPLE('b',y), TOTUPLE('c',z)),TOTUPLE(data);");
pig.registerQuery("STORE insertformat INTO 'cql://cql3ks/compotable?" + defaultParameters + nativeParameters + "&output_query=UPDATE%20cql3ks.compotable%20SET%20d%20%3D%20%3F' USING CqlNativeStorage();");
pig.executeBatch();
//(5,6,Fix,nomatch)
//(3,3,Three,match)
//(1,1,One,match)
//(2,2,Two,match)
//(7,7,Seven,match)
//(8,8,Eight,match)
//(6,5,Sive,nomatch)
//(4,4,Four,match)
//(9,10,Ninen,nomatch)
//input_cql=select * from compotable where token(a) > ? and token(a) <= ?
pig.registerQuery("result= LOAD 'cql://cql3ks/compotable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compotable%20where%20token(a)%20%3E%20%3F%20and%20token(a)%20%3C%3D%20%3F' USING CqlNativeStorage();");
Iterator<Tuple> it = pig.openIterator("result");
int count = 0;
while (it.hasNext()) {
it.next();
count ++;
}
Assert.assertEquals(count, 9);
}
@Test
public void testCqlNativeStorageCollectionColumnTable() throws IOException
{
//input_cql=select * from collectiontable where token(m) > ? and token(m) <= ?
CollectionColumnTableTest("collectiontable= LOAD 'cql://cql3ks/collectiontable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20collectiontable%20where%20token(m)%20%3E%20%3F%20and%20token(m)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void CollectionColumnTableTest(String initialQuery) throws IOException
{
pig.setBatchOn();
pig.registerQuery(initialQuery);
pig.registerQuery("recs= FOREACH collectiontable GENERATE TOTUPLE(TOTUPLE('m', m) ), TOTUPLE(TOTUPLE('map', TOTUPLE('m', 'mm'), TOTUPLE('n', 'nn')));");
pig.registerQuery("STORE recs INTO 'cql://cql3ks/collectiontable?" + defaultParameters + nativeParameters + "&output_query=update+cql3ks.collectiontable+set+n+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
//(book2,((m,mm),(n,nn)))
//(book3,((m,mm),(n,nn)))
//(book4,((m,mm),(n,nn)))
//(book1,((m,mm),(n,nn)))
//input_cql=select * from collectiontable where token(m) > ? and token(m) <= ?
pig.registerQuery("result= LOAD 'cql://cql3ks/collectiontable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20collectiontable%20where%20token(m)%20%3E%20%3F%20and%20token(m)%20%3C%3D%20%3F' USING CqlNativeStorage();");
Iterator<Tuple> it = pig.openIterator("result");
if (it.hasNext()) {
Tuple t = it.next();
Tuple t1 = (Tuple) t.get(1);
Assert.assertEquals(t1.size(), 2);
Tuple element1 = (Tuple) t1.get(0);
Tuple element2 = (Tuple) t1.get(1);
Assert.assertEquals(element1.get(0), "m");
Assert.assertEquals(element1.get(1), "mm");
Assert.assertEquals(element2.get(0), "n");
Assert.assertEquals(element2.get(1), "nn");
}
else
{
Assert.fail("Can't fetch any data");
}
}
@Test
public void testCqlNativeStorageNullTuples() throws IOException
{
//input_cql=select * from collectiontable where token(m) > ? and token(m) <= ?
NullTupleTest("nulltable= LOAD 'cql://cql3ks/collectiontable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20nulltable%20where%20token(m)%20%3E%20%3F%20and%20token(m)%20%3C%3D%20%3F' USING CqlNativeStorage();");
}
private void NullTupleTest(String initialQuery) throws IOException
{
pig.setBatchOn();
pig.registerQuery(initialQuery);
pig.registerQuery("recs= FOREACH nulltable GENERATE TOTUPLE(TOTUPLE('m', m) ), TOTUPLE(TOTUPLE('map', TOTUPLE('m', null), TOTUPLE('n', null)));");
pig.registerQuery("STORE recs INTO 'cql://cql3ks/nulltable?" + defaultParameters + nativeParameters + "&output_query=update+cql3ks.nulltable+set+n+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
pig.registerQuery("result= LOAD 'cql://cql3ks/nulltable?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20nulltable%20where%20token(m)%20%3E%20%3F%20and%20token(m)%20%3C%3D%20%3F' USING CqlNativeStorage();");
Iterator<Tuple> it = pig.openIterator("result");
if (it.hasNext()) {
Tuple t = it.next();
Tuple t1 = (Tuple) t.get(1);
Assert.assertEquals(t1.size(), 2);
Tuple element1 = (Tuple) t1.get(0);
Tuple element2 = (Tuple) t1.get(1);
Assert.assertEquals(element1.get(0), "m");
Assert.assertEquals(element1.get(1), "");
Assert.assertEquals(element2.get(0), "n");
Assert.assertEquals(element2.get(1), "");
}
else
{
Assert.fail("Can't fetch any data");
}
}
@Test
public void testCqlStorageSingleKeyTableBulkLoad() throws TException, IOException
{
pig.setBatchOn();
//input_cql=select * from moredata where token(x) > ? and token(x) <= ?
pig.registerQuery("moretestvalues= LOAD 'cql://cql3ks/moredata?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20moredata%20where%20token(x)%20%3E%20%3F%20and%20token(x)%20%3C%3D%20%3F' USING CqlNativeStorage();");
pig.registerQuery("insertformat= FOREACH moretestvalues GENERATE TOTUPLE(x, y);");
pig.registerQuery("STORE insertformat INTO 'cql://cql3ks/test_bulk?" + defaultParameters + nativeParameters + "&bulk_output_format=true&bulk_cf_schema=CREATE%20TABLE%20cql3ks.test_bulk%20(a%20int%20PRIMARY%20KEY%2C%20b%20int)&bulk_insert_statement=Insert%20into%20cql3ks.test_bulk(a%2C%20b)%20values(%3F%2C%3F)' USING CqlNativeStorage();");
pig.executeBatch();
//(5,5)
//(6,6)
//(4,4)
//(2,2)
//(3,3)
//(1,1)
//input_cql=select * from test_bulk1 where token(a) > ? and token(a) <= ?
pig.registerQuery("result= LOAD 'cql://cql3ks/test_bulk?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20test_bulk%20where%20token(a)%20%3E%20%3F%20and%20token(a)%20%3C%3D%20%3F' USING CqlNativeStorage();");
Iterator<Tuple> it = pig.openIterator("result");
int count = 0;
while (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), t.get(1));
count ++;
}
Assert.assertEquals(6, count);
}
}

View File

@ -1,117 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.TypeParser;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.exceptions.SyntaxException;
import org.apache.cassandra.service.EmbeddedCassandraService;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
import org.apache.pig.backend.hadoop.datastorage.ConfigurationUtil;
import org.apache.pig.impl.PigContext;
import org.apache.pig.test.MiniCluster;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
public class PigTestBase extends SchemaLoader
{
protected static EmbeddedCassandraService cassandra;
protected static Configuration conf;
protected static MiniCluster cluster;
protected static PigServer pig;
protected static String defaultParameters= "init_address=localhost&rpc_port=9170&partitioner=org.apache.cassandra.dht.Murmur3Partitioner";
protected static String nativeParameters = "&core_conns=2&max_conns=10&min_simult_reqs=3&max_simult_reqs=10&native_timeout=10000000" +
"&native_read_timeout=10000000&send_buff_size=4096&receive_buff_size=4096&solinger=3" +
"&tcp_nodelay=true&reuse_address=true&keep_alive=true&native_port=9042";
static
{
System.setProperty("logback.configurationFile", "logback-test.xml");
System.setProperty("cassandra.config", "cassandra_pig.yaml");
}
@AfterClass
public static void oneTimeTearDown() throws Exception {
cluster.shutDown();
}
@Before
public void beforeTest() throws Exception {
pig = new PigServer(new PigContext(ExecType.LOCAL, ConfigurationUtil.toProperties(conf)));
PigContext.initializeImportList("org.apache.cassandra.hadoop.pig");
}
@After
public void tearDown() throws Exception {
pig.shutdown();
}
protected static Session getClient()
{
Cluster cluster = Cluster.builder().addContactPoints("localhost").withPort(9042).build();
return cluster.connect();
}
protected static void startCassandra() throws IOException
{
Schema.instance.clear(); // Schema are now written on disk and will be reloaded
cassandra = new EmbeddedCassandraService();
cassandra.start();
}
protected static void startHadoopCluster()
{
cluster = MiniCluster.buildCluster();
conf = cluster.getConfiguration();
}
protected AbstractType parseType(String type) throws IOException
{
try
{
return TypeParser.parse(type);
}
catch (ConfigurationException | SyntaxException e)
{
throw new IOException(e);
}
}
protected static void executeCQLStatements(String[] statements)
{
Session client = getClient();
for (String statement : statements)
{
System.out.println("Executing statement: " + statement);
client.execute(statement);
}
}
}

View File

@ -1,150 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import org.apache.cassandra.db.marshal.TimeUUIDType;
import org.apache.cassandra.db.marshal.UUIDType;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.utils.Hex;
import org.apache.pig.data.DataByteArray;
import org.apache.pig.data.Tuple;
import org.junit.BeforeClass;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
public class ThriftColumnFamilyDataTypeTest extends PigTestBase
{
private static String[] statements = {
"DROP KEYSPACE IF EXISTS thrift_ks",
"CREATE KEYSPACE thrift_ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};",
"USE thrift_ks;",
"CREATE TABLE some_app (" +
"key text PRIMARY KEY," +
"col_ascii ascii," +
"col_bigint bigint," +
"col_blob blob," +
"col_boolean boolean," +
"col_decimal decimal," +
"col_double double," +
"col_float float," +
"col_inet inet," +
"col_int int," +
"col_text text," +
"col_timestamp timestamp," +
"col_timeuuid timeuuid," +
"col_uuid uuid," +
"col_varint varint)" +
" WITH COMPACT STORAGE;",
"INSERT INTO some_app (key, col_ascii, col_bigint, col_blob, col_boolean, col_decimal, col_double, col_float," +
"col_inet, col_int, col_text, col_timestamp, col_uuid, col_varint, col_timeuuid) " +
"VALUES ('foo', 'ascii', 12345678, 0xDEADBEEF, false, 23.345, 2.7182818284590451, 23.45, '127.0.0.1', 23, 'hello', " +
"'2011-02-03T04:05:00+0000', 550e8400-e29b-41d4-a716-446655440000, 12345, e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f);",
"CREATE TABLE cc (key text, name text, value counter, PRIMARY KEY (key, name)) WITH COMPACT STORAGE",
"UPDATE cc SET value = value + 3 WHERE key = 'chuck' AND name = 'kick'",
};
@BeforeClass
public static void setup() throws IOException, ConfigurationException
{
startCassandra();
executeCQLStatements(statements);
startHadoopCluster();
}
@Test
public void testCassandraStorageDataType() throws IOException
{
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + "' USING CqlNativeStorage();");
Tuple t = pig.openIterator("rows").next();
// key
assertEquals("foo", t.get(0));
// col_ascii
Object column = t.get(1);
assertEquals("ascii", column);
// col_bigint
column = t.get(2);
assertEquals(12345678L, column);
// col_blob
column = t.get(3);
assertEquals(new DataByteArray(Hex.hexToBytes("DEADBEEF")), column);
// col_boolean
column = t.get(4);
assertEquals(false, column);
// col_decimal
column = t.get(5);
assertEquals("23.345", column);
// col_double
column = t.get(6);
assertEquals(2.7182818284590451d, column);
// col_float
column = t.get(7);
assertEquals(23.45f, column);
// col_inet
column = t.get(8);
assertEquals("127.0.0.1", column);
// col_int
column = t.get(9);
assertEquals(23, column);
// col_text
column = t.get(10);
assertEquals("hello", column);
// col_timestamp
column = t.get(11);
assertEquals(1296705900000L, column);
// col_timeuuid
column = t.get(12);
assertEquals(new DataByteArray((TimeUUIDType.instance.fromString("e23f450f-53a6-11e2-7f7f-7f7f7f7f7f7f").array())), column);
// col_uuid
column = t.get(13);
assertEquals(new DataByteArray((UUIDType.instance.fromString("550e8400-e29b-41d4-a716-446655440000").array())), column);
// col_varint
column = t.get(14);
assertEquals(12345, column);
pig.registerQuery("cc_rows = LOAD 'cql://thrift_ks/cc?" + defaultParameters + "' USING CqlNativeStorage();");
t = pig.openIterator("cc_rows").next();
assertEquals("chuck", t.get(0));
assertEquals("kick", t.get(1));
assertEquals(3L, t.get(2));
}
}

View File

@ -1,617 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cassandra.pig;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Iterator;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.DataByteArray;
import org.apache.pig.data.Tuple;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class ThriftColumnFamilyTest extends PigTestBase
{
private static String[] statements = {
"DROP KEYSPACE IF EXISTS thrift_ks",
"CREATE KEYSPACE thrift_ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};",
"USE thrift_ks;",
"CREATE TABLE some_app (" +
"key text PRIMARY KEY," +
"name text," +
"vote_type text," +
"rating int," +
"score bigint," +
"percent float," +
"atomic_weight double," +
"created timestamp)" +
" WITH COMPACT STORAGE;",
"CREATE INDEX ON some_app(name);",
"INSERT INTO some_app (key, name, vote_type, rating, score, percent, atomic_weight, created) " +
"VALUES ('foo', 'User Foo', 'like', 8, 125000, 85.0, 2.7182818284590451, 1335890877);",
"INSERT INTO some_app (key, name, vote_type, rating, score, percent, atomic_weight, created) " +
"VALUES ('bar', 'User Bar', 'like', 9, 15000, 35.0, 3.1415926535897931, 1335890877);",
"INSERT INTO some_app (key, name, vote_type, rating, score, percent, atomic_weight, created) " +
"VALUES ('baz', 'User Baz', 'dislike', 3, 512000, 95.3, 1.61803399, 1335890877);",
"INSERT INTO some_app (key, name, vote_type, rating, score, percent, atomic_weight, created) " +
"VALUES ('qux', 'User Qux', 'dislike', 2, 12000, 64.7, 0.660161815846869, 1335890877);",
"CREATE TABLE copy_of_some_app (" +
"key text PRIMARY KEY," +
"name text," +
"vote_type text," +
"rating int," +
"score bigint," +
"percent float," +
"atomic_weight double," +
"created timestamp)" +
" WITH COMPACT STORAGE;",
"CREATE INDEX ON copy_of_some_app(name);",
"CREATE TABLE u8 (" +
"key text," +
"column1 text," +
"value blob," +
"PRIMARY KEY (key, column1))" +
" WITH COMPACT STORAGE",
"INSERT INTO u8 (key, column1, value) VALUES ('foo', 'x', asciiAsBlob('Z'))",
"CREATE TABLE bytes (" +
"key blob," +
"column1 text," +
"value blob," +
"PRIMARY KEY (key, column1))" +
" WITH COMPACT STORAGE",
"INSERT INTO bytes (key, column1, value) VALUES (asciiAsBlob('foo'), 'x', asciiAsBlob('Z'))",
"CREATE TABLE cc (key text, name text, value counter, PRIMARY KEY (key, name)) WITH COMPACT STORAGE",
"UPDATE cc SET value = value + 3 WHERE key = 'chuck' AND name = 'kick'",
"UPDATE cc SET value = value + 1 WHERE key = 'chuck' AND name = 'fist'",
"CREATE TABLE compo (" +
"key text," +
"column1 text," +
"column2 text," +
"value text," +
"PRIMARY KEY (key, column1, column2))" +
" WITH COMPACT STORAGE",
"INSERT INTO compo (key, column1, column2, value) VALUES ('punch', 'bruce', 'lee', 'ouch');",
"INSERT INTO compo (key, column1, column2, value) VALUES ('punch', 'bruce', 'bruce', 'hunh?');",
"INSERT INTO compo (key, column1, column2, value) VALUES ('kick', 'bruce', 'lee', 'oww');",
"INSERT INTO compo (key, column1, column2, value) VALUES ('kick', 'bruce', 'bruce', 'watch it, mate');",
"CREATE TABLE compo_int (" +
"key text," +
"column1 bigint," +
"column2 bigint," +
"value text," +
"PRIMARY KEY (key, column1, column2))" +
" WITH COMPACT STORAGE",
"INSERT INTO compo_int (key, column1, column2, value) VALUES ('clock', 1, 0, 'z');",
"INSERT INTO compo_int (key, column1, column2, value) VALUES ('clock', 1, 30, 'zzzz');",
"INSERT INTO compo_int (key, column1, column2, value) VALUES ('clock', 2, 30, 'daddy?');",
"INSERT INTO compo_int (key, column1, column2, value) VALUES ('clock', 6, 30, 'coffee...');",
"CREATE TABLE compo_int_copy (" +
"key text," +
"column1 bigint," +
"column2 bigint," +
"value text," +
"PRIMARY KEY (key, column1, column2))" +
" WITH COMPACT STORAGE",
"CREATE TABLE compo_key (" +
"key text," +
"column1 bigint," +
"column2 bigint," +
"value text," +
"PRIMARY KEY ((key, column1), column2))" +
" WITH COMPACT STORAGE",
"INSERT INTO compo_key (key, column1, column2, value) VALUES ('clock', 10, 1, 'z');",
"INSERT INTO compo_key (key, column1, column2, value) VALUES ('clock', 20, 1, 'zzzz');",
"INSERT INTO compo_key (key, column1, column2, value) VALUES ('clock', 30, 2, 'daddy?');",
"INSERT INTO compo_key (key, column1, column2, value) VALUES ('clock', 40, 6, 'coffee...');",
"CREATE TABLE compo_key_copy (" +
"key text," +
"column1 bigint," +
"column2 bigint," +
"value text," +
"PRIMARY KEY ((key, column1), column2))" +
" WITH COMPACT STORAGE",
};
private static String[] deleteCopyOfSomeAppTableData = {
"use thrift_ks;",
"DELETE FROM copy_of_some_app WHERE key = 'foo';",
"DELETE FROM copy_of_some_app WHERE key = 'bar';",
"DELETE FROM copy_of_some_app WHERE key = 'baz';",
"DELETE FROM copy_of_some_app WHERE key = 'qux';",
};
@BeforeClass
public static void setup() throws IOException, ConfigurationException
{
startCassandra();
executeCQLStatements(statements);
startHadoopCluster();
}
@Test
public void testCqlNativeStorage() throws IOException
{
//regular thrift column families
//input_cql=select * from "some_app" where token(key) > ? and token(key) <= ?
cqlStorageTest("data = load 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20%22some_app%22%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
//Test counter column family
//input_cql=select * from "cc" where token(key) > ? and token(key) <= ?
cqlStorageCounterTableTest("cc_data = load 'cql://thrift_ks/cc?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20%22cc%22%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
//Test composite column family
//input_cql=select * from "compo" where token(key) > ? and token(key) <= ?
cqlStorageCompositeTableTest("compo_data = load 'cql://thrift_ks/compo?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20%22compo%22%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
}
private void cqlStorageTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
//(bar,3.141592653589793,1335890877,User Bar,35.0,9,15000,like)
//(baz,1.61803399,1335890877,User Baz,95.3,3,512000,dislike)
//(foo,2.718281828459045,1335890877,User Foo,85.0,8,125000,like)
//(qux,0.660161815846869,1335890877,User Qux,64.7,2,12000,dislike)
//{key: chararray,atomic_weight: double,created: long,name: chararray,percent: float,rating: int,score: long,vote_type: chararray}
Iterator<Tuple> it = pig.openIterator("data");
int count = 0;
while (it.hasNext()) {
count ++;
Tuple t = it.next();
if ("bar".equals(t.get(0)))
{
Assert.assertEquals(t.get(1), 3.141592653589793d);
Assert.assertEquals(t.get(3), "User Bar");
Assert.assertEquals(t.get(4), 35.0f);
Assert.assertEquals(t.get(5), 9);
Assert.assertEquals(t.get(6), 15000L);
Assert.assertEquals(t.get(7), "like");
}
else if ("baz".equals(t.get(0)))
{
Assert.assertEquals(t.get(1), 1.61803399d);
Assert.assertEquals(t.get(3), "User Baz");
Assert.assertEquals(t.get(4), 95.3f);
Assert.assertEquals(t.get(5), 3);
Assert.assertEquals(t.get(6), 512000L);
Assert.assertEquals(t.get(7), "dislike");
}
else if ("foo".equals(t.get(0)))
{
Assert.assertEquals(t.get(0), "foo");
Assert.assertEquals(t.get(1), 2.718281828459045d);
Assert.assertEquals(t.get(3), "User Foo");
Assert.assertEquals(t.get(4), 85.0f);
Assert.assertEquals(t.get(5), 8);
Assert.assertEquals(t.get(6), 125000L);
Assert.assertEquals(t.get(7), "like");
}
else if ("qux".equals(t.get(0)))
{
Assert.assertEquals(t.get(0), "qux");
Assert.assertEquals(t.get(1), 0.660161815846869d);
Assert.assertEquals(t.get(3), "User Qux");
Assert.assertEquals(t.get(4), 64.7f);
Assert.assertEquals(t.get(5), 2);
Assert.assertEquals(t.get(6), 12000L);
Assert.assertEquals(t.get(7), "dislike");
}
}
Assert.assertEquals(count, 4);
}
private void cqlStorageCounterTableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
//(chuck,fist,1)
//(chuck,kick,3)
// {key: chararray,column1: chararray,value: long}
Iterator<Tuple> it = pig.openIterator("cc_data");
int count = 0;
while (it.hasNext()) {
count ++;
Tuple t = it.next();
if ("chuck".equals(t.get(0)) && "fist".equals(t.get(1)))
Assert.assertEquals(t.get(2), 1L);
else if ("chuck".equals(t.get(0)) && "kick".equals(t.get(1)))
Assert.assertEquals(t.get(2), 3L);
}
Assert.assertEquals(count, 2);
}
private void cqlStorageCompositeTableTest(String initialQuery) throws IOException
{
pig.registerQuery(initialQuery);
//(kick,bruce,bruce,watch it, mate)
//(kick,bruce,lee,oww)
//(punch,bruce,bruce,hunh?)
//(punch,bruce,lee,ouch)
//{key: chararray,column1: chararray,column2: chararray,value: chararray}
Iterator<Tuple> it = pig.openIterator("compo_data");
int count = 0;
while (it.hasNext()) {
count ++;
Tuple t = it.next();
if ("kick".equals(t.get(0)) && "bruce".equals(t.get(1)) && "bruce".equals(t.get(2)))
Assert.assertEquals(t.get(3), "watch it, mate");
else if ("kick".equals(t.get(0)) && "bruce".equals(t.get(1)) && "lee".equals(t.get(2)))
Assert.assertEquals(t.get(3), "oww");
else if ("punch".equals(t.get(0)) && "bruce".equals(t.get(1)) && "bruce".equals(t.get(2)))
Assert.assertEquals(t.get(3), "hunh?");
else if ("punch".equals(t.get(0)) && "bruce".equals(t.get(1)) && "lee".equals(t.get(2)))
Assert.assertEquals(t.get(3), "ouch");
}
Assert.assertEquals(count, 4);
}
@Test
public void testCqlNativeStorageSchema() throws IOException
{
//results: (qux,(atomic_weight,0.660161815846869),(created,1335890877),(name,User Qux),(percent,64.7),
//(rating,2),(score,12000),(vote_type,dislike))
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + "' USING CqlNativeStorage();");
//schema: {key: chararray,atomic_weight: (name: chararray,value: double),created: (name: chararray,value: long),
//name: (name: chararray,value: chararray),percent: (name: chararray,value: float),
//rating: (name: chararray,value: int),score: (name: chararray,value: long),
//vote_type: (name: chararray,value: chararray),columns: {(name: chararray,value: chararray)}}
Iterator<Tuple> it = pig.openIterator("rows");
if (it.hasNext()) {
Tuple t = it.next();
String rowKey = t.get(0).toString();
if ("qux".equals(rowKey))
{
Tuple column = (Tuple) t.get(1);
Assert.assertEquals(column.get(0), "atomic_weight");
Assert.assertEquals(column.get(1), 0.660161815846869d);
column = (Tuple) t.get(3);
Assert.assertEquals(column.get(0), "name");
Assert.assertEquals(column.get(1), "User Qux");
column = (Tuple) t.get(4);
Assert.assertEquals(column.get(0), "percent");
Assert.assertEquals(column.get(1), 64.7f);
column = (Tuple) t.get(5);
Assert.assertEquals(column.get(0), "rating");
Assert.assertEquals(column.get(1), 2);
column = (Tuple) t.get(6);
Assert.assertEquals(column.get(0), "score");
Assert.assertEquals(column.get(1), 12000L);
column = (Tuple) t.get(7);
Assert.assertEquals(column.get(0), "vote_type");
Assert.assertEquals(column.get(1), "dislike");
}
}
}
@Test
public void testCqlNativeStorageFullCopy() throws IOException
{
pig.setBatchOn();
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20some_app%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
pig.registerQuery("records = FOREACH rows GENERATE TOTUPLE(TOTUPLE('key', key)),TOTUPLE(atomic_weight, created, name, percent, rating, score, vote_type);");
//full copy
pig.registerQuery("STORE records INTO 'cql://thrift_ks/copy_of_some_app?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.copy_of_some_app+set+atomic_weight+%3D+%3F,+created+%3D+%3F,+name+%3D+%3F,+percent+%3D+%3F,+rating+%3D+%3F,+score+%3D+%3F,+vote_type+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
Assert.assertEquals("User Qux", getColumnValue("thrift_ks", "copy_of_some_app", "name", "qux", "UTF8Type"));
Assert.assertEquals("dislike", getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "qux", "UTF8Type"));
Assert.assertEquals("64.7", getColumnValue("thrift_ks", "copy_of_some_app", "percent", "qux", "FloatType"));
}
@Test
public void testCqlNativeStorageSingleTupleCopy() throws IOException
{
executeCQLStatements(deleteCopyOfSomeAppTableData);
pig.setBatchOn();
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20some_app%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
//single tuple
pig.registerQuery("onecol = FOREACH rows GENERATE TOTUPLE(TOTUPLE('key', key)), TOTUPLE(percent);");
pig.registerQuery("STORE onecol INTO 'cql://thrift_ks/copy_of_some_app?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.copy_of_some_app+set+percent+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
String value = getColumnValue("thrift_ks", "copy_of_some_app", "name", "qux", "UTF8Type");
if (value != null)
Assert.fail();
value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "qux", "UTF8Type");
if (value != null)
Assert.fail();
Assert.assertEquals("64.7", getColumnValue("thrift_ks", "copy_of_some_app", "percent", "qux", "FloatType"));
}
@Test
public void testCqlNativeStorageBagOnlyCopy() throws IOException
{
executeCQLStatements(deleteCopyOfSomeAppTableData);
pig.setBatchOn();
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20some_app%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
//bag only
pig.registerQuery("other = FOREACH rows GENERATE TOTUPLE(TOTUPLE('key', key)), TOTUPLE();");
pig.registerQuery("STORE other INTO 'cql://thrift_ks/copy_of_some_app?" + defaultParameters + nativeParameters + "' USING CqlNativeStorage();");
pig.executeBatch();
String value = getColumnValue("thrift_ks", "copy_of_some_app", "name", "qux", "UTF8Type");
if (value != null)
Assert.fail();
value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "qux", "UTF8Type");
if (value != null)
Assert.fail();
value = getColumnValue("thrift_ks", "copy_of_some_app", "percent", "qux", "FloatType");
if (value != null)
Assert.fail();
}
@Test
public void testCqlNativeStorageFilter() throws IOException
{
executeCQLStatements(deleteCopyOfSomeAppTableData);
pig.setBatchOn();
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20some_app%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
//filter
pig.registerQuery("likes = FILTER rows by vote_type eq 'like' and rating > 5;");
pig.registerQuery("records = FOREACH likes GENERATE TOTUPLE(TOTUPLE('key', key)),TOTUPLE(atomic_weight, created, name, percent, rating, score, vote_type);");
pig.registerQuery("STORE records INTO 'cql://thrift_ks/copy_of_some_app?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.copy_of_some_app+set+atomic_weight+%3D+%3F,+created+%3D+%3F,+name+%3D+%3F,+percent+%3D+%3F,+rating+%3D+%3F,+score+%3D+%3F,+vote_type+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
Assert.assertEquals("like", getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "bar", "UTF8Type"));
Assert.assertEquals("like", getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "foo", "UTF8Type"));
String value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "qux", "UTF8Type");
if (value != null)
Assert.fail();
value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "baz", "UTF8Type");
if (value != null)
Assert.fail();
executeCQLStatements(deleteCopyOfSomeAppTableData);
pig.setBatchOn();
pig.registerQuery("rows = LOAD 'cql://thrift_ks/some_app?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20some_app%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' USING CqlNativeStorage();");
pig.registerQuery("dislikes_extras = FILTER rows by vote_type eq 'dislike';");
pig.registerQuery("dislikes_records = FOREACH dislikes_extras GENERATE TOTUPLE(TOTUPLE('key', key)),TOTUPLE(atomic_weight, created, name, percent, rating, score, vote_type);");
pig.registerQuery("STORE dislikes_records INTO 'cql://thrift_ks/copy_of_some_app?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.copy_of_some_app+set+atomic_weight+%3D+%3F,+created+%3D+%3F,+name+%3D+%3F,+percent+%3D+%3F,+rating+%3D+%3F,+score+%3D+%3F,+vote_type+%3D+%3F' USING CqlNativeStorage();");
pig.executeBatch();
Assert.assertEquals("dislike", getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "baz", "UTF8Type"));
Assert.assertEquals("dislike", getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "qux", "UTF8Type"));
value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "bar", "UTF8Type");
if (value != null)
Assert.fail();
value = getColumnValue("thrift_ks", "copy_of_some_app", "vote_type", "foo", "UTF8Type");
if (value != null)
Assert.fail();
}
@Test
public void testCqlNativeStorageJoin() throws IOException
{
//test key types with a join
pig.registerQuery("U8 = load 'cql://thrift_ks/u8?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20u8%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("Bytes = load 'cql://thrift_ks/bytes?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20bytes%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
//cast key to chararray
pig.registerQuery("b = foreach Bytes generate (chararray)key, column1, value;");
//key in Bytes is a bytearray, U8 chararray
//(foo,{(x,Z)},foo,{(x,Z)})
pig.registerQuery("a = join Bytes by key, U8 by key;");
Iterator<Tuple> it = pig.openIterator("a");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), new DataByteArray("foo".getBytes()));
Assert.assertEquals(t.get(1), "x");
Assert.assertEquals(t.get(2), new DataByteArray("Z".getBytes()));
Assert.assertEquals(t.get(3), "foo");
Assert.assertEquals(t.get(4), "x");
Assert.assertEquals(t.get(5), new DataByteArray("Z".getBytes()));
}
//key should now be cast into a chararray
//(foo,{(x,Z)},foo,{(x,Z)})
pig.registerQuery("c = join b by (chararray)key, U8 by (chararray)key;");
it = pig.openIterator("c");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), "foo");
Assert.assertEquals(t.get(1), "x");
Assert.assertEquals(t.get(2), new DataByteArray("Z".getBytes()));
Assert.assertEquals(t.get(3), "foo");
Assert.assertEquals(t.get(4), "x");
Assert.assertEquals(t.get(5), new DataByteArray("Z".getBytes()));
}
}
@Test
public void testCqlNativeStorageCounterCF() throws IOException
{
//Test counter column family support
pig.registerQuery("CC = load 'cql://thrift_ks/cc?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20cc%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("A = foreach CC generate key, name, value;");
pig.registerQuery("B = GROUP A BY key;");
pig.registerQuery("total_hits = foreach B generate group, SUM(A.value);");
//(chuck,4)
Tuple t = pig.openIterator("total_hits").next();
Assert.assertEquals(t.get(0), "chuck");
Assert.assertEquals(t.get(1), 4l);
}
@Test
public void testCqlNativeStorageCompositeColumnCF() throws IOException
{
//Test CompositeType
pig.registerQuery("compo = load 'cql://thrift_ks/compo?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("lee = filter compo by column1 == 'bruce' AND column2 == 'lee';");
//(kick,(bruce,lee),oww)
//(punch,(bruce,lee),ouch)
Iterator<Tuple> it = pig.openIterator("lee");
int count = 0;
while (it.hasNext()) {
count ++;
Tuple t = it.next();
Assert.assertEquals(t.get(1), "bruce");
Assert.assertEquals(t.get(2), "lee");
if ("kick".equals(t.get(0)))
Assert.assertEquals(t.get(3), "oww");
else
Assert.assertEquals(t.get(3), "ouch");
}
Assert.assertEquals(count, 2);
pig.registerQuery("night = load 'cql://thrift_ks/compo_int?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_int%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("night = foreach night generate (int)column1+(double)column2/60 as hour, value as noise;");
//What happens at the darkest hour?
pig.registerQuery("darkest = filter night by hour > 2 and hour < 5;");
//(2.5,daddy?)
it = pig.openIterator("darkest");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), 2.5d);
Assert.assertEquals(t.get(1), "daddy?");
}
pig.setBatchOn();
pig.registerQuery("compo_int_rows = LOAD 'cql://thrift_ks/compo_int?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_int%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("STORE compo_int_rows INTO 'cql://thrift_ks/compo_int_copy?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.compo_int_copy+set+column1+%3D+%3F,+column2+%3D+%3F,+value+%3D+%3F' using CqlNativeStorage();");
pig.executeBatch();
pig.registerQuery("compocopy_int_rows = LOAD 'cql://thrift_ks/compo_int_copy?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_int_copy%20where%20token(key)%20%3E%20%3F%20and%20token(key)%20%3C%3D%20%3F' using CqlNativeStorage();");
//(clock,{((1,0),z),((1,30),zzzz),((2,30),daddy?),((6,30),coffee...)})
it = pig.openIterator("compocopy_int_rows");
count = 0;
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), "clock");
DataBag columns = (DataBag) t.get(1);
for (Tuple t1 : columns)
{
count++;
Tuple inner = (Tuple) t1.get(0);
if ((Long) inner.get(0) == 1L && (Long) inner.get(1) == 0L)
Assert.assertEquals(t1.get(1), "z");
else if ((Long) inner.get(0) == 1L && (Long) inner.get(1) == 30L)
Assert.assertEquals(t1.get(1), "zzzz");
else if ((Long) inner.get(0) == 2L && (Long) inner.get(1) == 30L)
Assert.assertEquals(t1.get(1), "daddy?");
else if ((Long) inner.get(0) == 6L && (Long) inner.get(1) == 30L)
Assert.assertEquals(t1.get(1), "coffee...");
}
Assert.assertEquals(count, 4);
}
}
@Test
public void testCqlNativeStorageCompositeKeyCF() throws IOException
{
//Test CompositeKey
pig.registerQuery("compokeys = load 'cql://thrift_ks/compo_key?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_key%20where%20token(key,column1)%20%3E%20%3F%20and%20token(key,column1)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("compokeys = filter compokeys by column1 == 40;");
//(clock,40,6,coffee...)
Iterator<Tuple> it = pig.openIterator("compokeys");
if (it.hasNext()) {
Tuple t = it.next();
Assert.assertEquals(t.get(0), "clock");
Assert.assertEquals(t.get(1), 40L);
Assert.assertEquals(t.get(2), 6L);
Assert.assertEquals(t.get(3), "coffee...");
}
pig.setBatchOn();
pig.registerQuery("compo_key_rows = LOAD 'cql://thrift_ks/compo_key?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_key%20where%20token(key,column1)%20%3E%20%3F%20and%20token(key,column1)%20%3C%3D%20%3F' using CqlNativeStorage();");
pig.registerQuery("compo_key_rows = FOREACH compo_key_rows GENERATE TOTUPLE(TOTUPLE('key',key),TOTUPLE('column1',column1),TOTUPLE('column2',column2)),TOTUPLE(value);");
pig.registerQuery("STORE compo_key_rows INTO 'cql://thrift_ks/compo_key_copy?" + defaultParameters + nativeParameters + "&output_query=UPDATE+thrift_ks.compo_key_copy+set+value+%3D+%3F' using CqlNativeStorage();");
pig.executeBatch();
pig.registerQuery("compo_key_copy_rows = LOAD 'cql://thrift_ks/compo_key_copy?" + defaultParameters + nativeParameters + "&input_cql=select%20*%20from%20compo_key_copy%20where%20token(key,column1)%20%3E%20%3F%20and%20token(key,column1)%20%3C%3D%20%3F' using CqlNativeStorage();");
//((clock,10),{(1,z)})
//((clock,20),{(1,zzzz)})
//((clock,30),{(2,daddy?)})
//((clock,40),{(6,coffee...)})
it = pig.openIterator("compo_key_copy_rows");
int count = 0;
while (it.hasNext()) {
Tuple t = it.next();
count ++;
if ("clock".equals(t.get(0)) && (Long) t.get(1) == 10L)
{
Assert.assertEquals(t.get(2), 1L);
Assert.assertEquals(t.get(3), "z");
}
else if ("clock".equals(t.get(0)) && (Long) t.get(1) == 40L)
{
Assert.assertEquals(t.get(2), 6L);
Assert.assertEquals(t.get(3), "coffee...");
}
else if ("clock".equals(t.get(0)) && (Long) t.get(1) == 20L)
{
Assert.assertEquals(t.get(2), 1L);
Assert.assertEquals(t.get(3), "zzzz");
}
else if ("clock".equals(t.get(0)) && (Long) t.get(1) == 30L)
{
Assert.assertEquals(t.get(2), 2L);
Assert.assertEquals(t.get(3), "daddy?");
}
}
Assert.assertEquals(4, count);
}
private String getColumnValue(String ks, String cf, String colName, String key, String validator) throws IOException
{
Session client = getClient();
client.execute("USE " + ks);
String query = String.format("SELECT %s FROM %s WHERE key = '%s'", colName, cf, key);
ResultSet rows = client.execute(query);
Row row = rows.one();
if (row == null || row.isNull(0))
return null;
return parseType(validator).getString(row.getBytesUnsafe(0));
}
}

View File

@ -1,86 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pig.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.mapred.MiniMRCluster;
public class MiniCluster extends MiniGenericCluster {
private MiniMRCluster m_mr = null;
public MiniCluster() {
super();
}
@Override
protected void setupMiniDfsAndMrClusters() {
try {
System.setProperty("hadoop.log.dir", "build/test/logs");
final int dataNodes = 4; // There will be 4 data nodes
final int taskTrackers = 4; // There will be 4 task tracker nodes
// Create the configuration hadoop-site.xml file
File conf_dir = new File("build/classes/");
conf_dir.mkdirs();
File conf_file = new File(conf_dir, "hadoop-site.xml");
conf_file.delete();
// Builds and starts the mini dfs and mapreduce clusters
Configuration config = new Configuration();
if (FBUtilities.isWindows())
config.set("fs.file.impl", WindowsLocalFileSystem.class.getName());
m_dfs = new MiniDFSCluster(config, dataNodes, true, null);
m_fileSys = m_dfs.getFileSystem();
m_mr = new MiniMRCluster(taskTrackers, m_fileSys.getUri().toString(), 1);
// Write the necessary config info to hadoop-site.xml
m_conf = m_mr.createJobConf();
m_conf.setInt("mapred.submit.replication", 2);
m_conf.set("dfs.datanode.address", "0.0.0.0:0");
m_conf.set("dfs.datanode.http.address", "0.0.0.0:0");
m_conf.set("mapred.map.max.attempts", "2");
m_conf.set("mapred.reduce.max.attempts", "2");
m_conf.set("pig.jobcontrol.sleep", "100");
try (OutputStream os = new FileOutputStream(conf_file))
{
m_conf.writeXml(os);
}
// Set the system properties needed by Pig
System.setProperty("cluster", m_conf.get("mapred.job.tracker"));
System.setProperty("namenode", m_conf.get("fs.default.name"));
System.setProperty("junit.hadoop.conf", conf_dir.getPath());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
protected void shutdownMiniMrClusters() {
if (m_mr != null)
m_mr.shutdown();
m_mr = null;
}
}

View File

@ -1,122 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pig.test;
import java.io.*;
import java.util.Properties;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.pig.backend.hadoop.datastorage.ConfigurationUtil;
/**
* This class builds a single instance of itself with the Singleton
* design pattern. While building the single instance, it sets up a
* mini cluster that actually consists of a mini DFS cluster and a
* mini MapReduce cluster on the local machine and also sets up the
* environment for Pig to run on top of the mini cluster.
*
* This class is the base class for MiniCluster, which has slightly
* difference among different versions of hadoop. MiniCluster implementation
* is located in $PIG_HOME/shims.
*/
abstract public class MiniGenericCluster {
protected MiniDFSCluster m_dfs = null;
protected FileSystem m_fileSys = null;
protected Configuration m_conf = null;
protected final static MiniCluster INSTANCE = new MiniCluster();
protected static boolean isSetup = true;
protected MiniGenericCluster() {
setupMiniDfsAndMrClusters();
}
abstract protected void setupMiniDfsAndMrClusters();
/**
* Returns the single instance of class MiniClusterBuilder that
* represents the resouces for a mini dfs cluster and a mini
* mapreduce cluster.
*/
public static MiniCluster buildCluster() {
if(! isSetup){
INSTANCE.setupMiniDfsAndMrClusters();
isSetup = true;
}
return INSTANCE;
}
public void shutDown(){
INSTANCE.shutdownMiniDfsAndMrClusters();
}
protected void finalize() {
shutdownMiniDfsAndMrClusters();
}
protected void shutdownMiniDfsAndMrClusters() {
isSetup = false;
shutdownMiniDfsClusters();
shutdownMiniMrClusters();
}
protected void shutdownMiniDfsClusters() {
try {
if (m_fileSys != null) { m_fileSys.close(); }
} catch (IOException e) {
e.printStackTrace();
}
if (m_dfs != null) { m_dfs.shutdown(); }
m_fileSys = null;
m_dfs = null;
}
abstract protected void shutdownMiniMrClusters();
public Properties getProperties() {
errorIfNotSetup();
return ConfigurationUtil.toProperties(m_conf);
}
public Configuration getConfiguration() {
return new Configuration(m_conf);
}
public void setProperty(String name, String value) {
errorIfNotSetup();
m_conf.set(name, value);
}
public FileSystem getFileSystem() {
errorIfNotSetup();
return m_fileSys;
}
/**
* Throw RunTimeException if isSetup is false
*/
private void errorIfNotSetup(){
if(isSetup)
return;
String msg = "function called on MiniCluster that has been shutdown";
throw new RuntimeException(msg);
}
}

View File

@ -1,62 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pig.test;
import java.io.IOException;
import org.apache.hadoop.fs.LocalFileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Workaround for https://issues.apache.org/jira/browse/HADOOP-7682 used to allow the Pig-tests to run on Cygwin on
* a Windows box. This workaround was suggested by Joshua Caplan in the comments of HADOOP-7682.
*/
public final class WindowsLocalFileSystem extends LocalFileSystem
{
private final Logger logger = LoggerFactory.getLogger(getClass());
public WindowsLocalFileSystem()
{
logger.warn("Using {} instead of org.apache.hadoop.fs.LocalFileSystem to avoid the problem linked to HADOOP-7682. " +
"IOException thrown when setting permissions will be swallowed.", getClass().getName());
}
@Override
public boolean mkdirs(Path path, FsPermission permission) throws IOException
{
boolean result = super.mkdirs(path);
setPermission(path, permission);
return result;
}
@Override
public void setPermission(Path p, FsPermission permission) throws IOException
{
try
{
super.setPermission(p, permission);
}
catch (IOException e)
{
// Just swallow the Exception as logging it produces too much output.
}
}
}